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

จะดึงฟิลด์ที่ซ้อนกันทั้งหมดจากคอลเล็กชัน MongoDB ได้อย่างไร


สำหรับสิ่งนี้ ให้ใช้ aggregate() ให้เราสร้างคอลเลกชันที่มีเอกสาร -

>db.demo138.insertOne({"Id":101,"PlayerDetails":[{"PlayerName":"Chris","PlayerScore":400},{"PlayerName":"David","PlayerScore":1000}]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e31bb9ffdf09dd6d08539a1")
}
>db.demo138.insertOne({"Id":102,"PlayerDetails":[{"PlayerName":"Bob","PlayerScore":500},{"PlayerName":"Carol","PlayerScore":600}]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e31bbcefdf09dd6d08539a2")
}

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

> db.demo138.find();

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

{
   "_id" : ObjectId("5e31bb9ffdf09dd6d08539a1"), "Id" : 101, "PlayerDetails" : [
      { "PlayerName" : "Chris", "PlayerScore" : 400 },
      { "PlayerName" : "David", "PlayerScore" : 1000 }
   ]
}
{
   "_id" : ObjectId("5e31bbcefdf09dd6d08539a2"), "Id" : 102, "PlayerDetails" : [
      { "PlayerName" : "Bob", "PlayerScore" : 500 }, { "PlayerName" : "Carol", "PlayerScore" : 600 }
   ] 
}

ต่อไปนี้เป็นแบบสอบถามเพื่อดึงฟิลด์ที่ซ้อนกันทั้งหมดจากคอลเลกชัน -

> db.demo138.aggregate([{ $unwind:"$PlayerDetails" }, { $project: { "PlayerName":"$PlayerDetails.PlayerName", "PlayerScore":"$PlayerDetails.PlayerScore" } } ] );

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

{ "_id" : ObjectId("5e31bb9ffdf09dd6d08539a1"), "PlayerName" : "Chris", "PlayerScore" : 400 }
{ "_id" : ObjectId("5e31bb9ffdf09dd6d08539a1"), "PlayerName" : "David", "PlayerScore" : 1000 }
{ "_id" : ObjectId("5e31bbcefdf09dd6d08539a2"), "PlayerName" : "Bob", "PlayerScore" : 500 }
{ "_id" : ObjectId("5e31bbcefdf09dd6d08539a2"), "PlayerName" : "Carol", "PlayerScore" : 600 }