ในการสั่งซื้อด้วยผลรวมของสองฟิลด์ คุณสามารถใช้กรอบงานรวมได้ ให้เราสร้างคอลเลกชันที่มีเอกสารก่อน
> db.orderByTwoFieldsDemo.insertOne({"Value1":10,"Value2":35}); { "acknowledged" : true, "insertedId" : ObjectId("5ca285576304881c5ce84baa") } > db.orderByTwoFieldsDemo.insertOne({"Value1":12,"Value2":5}); { "acknowledged" : true, "insertedId" : ObjectId("5ca2855f6304881c5ce84bab") } > db.orderByTwoFieldsDemo.insertOne({"Value1":55,"Value2":65}); { "acknowledged" : true, "insertedId" : ObjectId("5ca285686304881c5ce84bac") }
ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงเอกสารทั้งหมดจากคอลเลกชันโดยใช้วิธี find()
> db.orderByTwoFieldsDemo.find().pretty();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้
{ "_id" : ObjectId("5ca285576304881c5ce84baa"), "Value1" : 10, "Value2" : 35 } { "_id" : ObjectId("5ca2855f6304881c5ce84bab"), "Value1" : 12, "Value2" : 5 } { "_id" : ObjectId("5ca285686304881c5ce84bac"), "Value1" : 55, "Value2" : 65 }
กรณีที่ 1 :ต่อไปนี้เป็นแบบสอบถามเพื่อจัดลำดับโดยสองฟิลด์รวมและได้ผลลัพธ์ในลำดับจากน้อยไปมาก:
> db.orderByTwoFieldsDemo.aggregate( ... [ ... {$project:{Value1:1, Value2:1, orderBySumValue:{$add: ["$Value1", "$Value2"]}}}, ... {$sort:{orderBySumValue:1}}] ... );
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้
{ "_id" : ObjectId("5ca2855f6304881c5ce84bab"), "Value1" : 12, "Value2" : 5, "orderBySumValue" : 17 } { "_id" : ObjectId("5ca285576304881c5ce84baa"), "Value1" : 10, "Value2" : 35, "orderBySumValue" : 45 } { "_id" : ObjectId("5ca285686304881c5ce84bac"), "Value1" : 55, "Value2" : 65, "orderBySumValue" : 120 }
กรณีที่ 2 :ต่อไปนี้เป็นแบบสอบถามเพื่อจัดลำดับโดยสองฟิลด์รวมและได้ผลลัพธ์ในลำดับจากมากไปน้อย
> db.orderByTwoFieldsDemo.aggregate( [ {$project:{Value1:1, Value2:1, orderBySumValue:{$add: ["$Value1", "$Value2"]}}}, {$sort:{orderBySumValue:-1}}] );
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้
{ "_id" : ObjectId("5ca285686304881c5ce84bac"), "Value1" : 55, "Value2" : 65, "orderBySumValue" : 120 } { "_id" : ObjectId("5ca285576304881c5ce84baa"), "Value1" : 10, "Value2" : 35, "orderBySumValue" : 45 } { "_id" : ObjectId("5ca2855f6304881c5ce84bab"), "Value1" : 12, "Value2" : 5, "orderBySumValue" : 17 }