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

ใช้แบบสอบถามที่คล้ายกับ MySQL Union กับ MongoDB หรือไม่


สำหรับข้อความค้นหาที่คล้ายกับ UNION สองคอลเล็กชัน ให้ใช้ JOIN ใน MongoDB พร้อมกับ aggregate() ให้เราสร้างคอลเลกชันที่มีเอกสาร -

<ก่อนหน้า>> db.demo486.insertOne({_id:1,"Amount":30,"No":4});{ "acknowledged" :true, "insertedId" :1 }> db.demo486.insertOne({ _id:2,"Amount":40,"No":2});{ "acknowledged" :true, "insertedId" :2 }> db.demo486.insertOne({_id:3,"Amount":60," ไม่":6});{ "รับทราบ" :จริง "insertedId" :3 }

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -

> db.demo486.find();

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

{ "_id" :1, "Amount" :30, "No" :4 }{ "_id" :2, "Amount" :40, "No" :2 }{ "_id" :3, "Amount" " :60, "ไม่" :6 }

ต่อไปนี้เป็นแบบสอบถามเพื่อสร้างคอลเลกชันที่สองด้วยเอกสาร -

> db.demo487.insertOne({_id:1,"Price":10,"No":4});{ "acknowledged" :true, "insertedId" :1 }> db.demo487.insertOne({ _id:2,"Price":80,"No":9});{ "acknowledged" :true, "insertedId" :2 }> db.demo487.insertOne({_id:3,"Price":20," ไม่":6});{ "รับทราบ" :จริง "insertedId" :3 }

แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -

> db.demo487.find();

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

{ "_id" :1, "Price" :10, "No" :4 }{ "_id" :2, "Price" :80, "No" :9 }{ "_id" :3, "Price " :20, "ไม่" :6 }

ต่อไปนี้คือข้อความค้นหาของ UNION สองข้อความค้นหาใน MongoDB -

> db.getCollection('demo486').aggregate([... {$lookup :{ from :"demo487",localField :"No", foreignField :"No", as:"demo487"}}, ... {$unwind :"$demo487"},... {... $group :{... _id :{... No :"$No",... },... TotalValue :{ $sum :{ $add:[ "$Amount", "$demo487.Price" ] }}... }... },... {$sort :{"_id.No":1}}, ... {... $project :{... No :"$_id.No",... TotalValue :1,... _id :0... }... }... ])

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

{ "TotalValue" :40, "No" :4 }{ "TotalValue" :80, "No" :6 }