Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

เลือกสองฟิลด์และส่งคืนอาร์เรย์ที่เรียงลำดับด้วยค่าที่แตกต่างกันใน MongoDB หรือไม่


ในการเลือกสองฟิลด์และส่งกลับอาร์เรย์ที่เรียงลำดับด้วยค่าที่แตกต่างกัน ให้ใช้กรอบงานรวมร่วมกับตัวดำเนินการ $setUnion ให้เราสร้างคอลเลกชันที่มีเอกสารก่อน -

> db.sortedArrayWithDistinctDemo.insertOne(
...    { value1: 4, value2: 5}
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cc690b99cb58ca2b005e666")
}
> db.sortedArrayWithDistinctDemo.insertOne(
...    {value1: 5, value2: 6}
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cc690b99cb58ca2b005e667")
}
> db.sortedArrayWithDistinctDemo.insertOne(
...    {value1: 7, value2: 4}
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cc690b99cb58ca2b005e668")
}

ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงเอกสารทั้งหมดจากคอลเลกชันโดยใช้วิธี find() -

> db.sortedArrayWithDistinctDemo.find().pretty();

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{ "_id" : ObjectId("5cc690b99cb58ca2b005e666"), "value1" : 4, "value2" : 5 }
{ "_id" : ObjectId("5cc690b99cb58ca2b005e667"), "value1" : 5, "value2" : 6 }
{ "_id" : ObjectId("5cc690b99cb58ca2b005e668"), "value1" : 7, "value2" : 4 }

ต่อไปนี้เป็นแบบสอบถามเพื่อเลือกสองฟิลด์และส่งกลับอาร์เรย์ที่เรียงลำดับด้วยค่าที่แตกต่างกัน ฟิลด์ที่นี่คือ “value1” และ “value2” –

> db.sortedArrayWithDistinctDemo.aggregate(
...    [
...       { "$group": {
...          "_id": null,
...          "value1": { "$push": "$value1" },
...          "value2": { "$push": "$value2" }
...       }},
...       { "$project": {
...          "_id": 0,
...          "bothValues": { "$setUnion": [ "$value1", "$value2" ] }
...       }}
...    ]
... );

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ ตอนนี้อาร์เรย์ที่จัดเรียงจะถูกส่งกลับด้วยค่าที่แตกต่างกัน -

{ "bothValues" : [ 4, 5, 6, 7 ] }