ใน MongoDB คุณไม่สามารถใช้ต่อยอดสำหรับคอลเล็กชันย่อยได้ อย่างไรก็ตาม ใช้ต่อยอดในเอกสารโดยรวม หากต้องการแสดงจำนวนค่าเฉพาะจากอาร์เรย์ ให้เลือก $slice
ให้เราสร้างคอลเลกชันที่มีเอกสาร -
> db.demo319.insertOne({"Scores":[100,345,980,890]}); { "acknowledged" : true, "insertedId" : ObjectId("5e50ecf6f8647eb59e562064") } > db.demo319.insertOne({"Scores":[903,10004,84575,844]}); { "acknowledged" : true, "insertedId" : ObjectId("5e50ed01f8647eb59e562065") }
แสดงเอกสารทั้งหมดจากคอลเล็กชันโดยใช้วิธี find() -
> db.demo319.find().pretty();
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" : ObjectId("5e50ecf6f8647eb59e562064"), "Scores" : [ 100, 345, 980, 890 ] } { "_id" : ObjectId("5e50ed01f8647eb59e562065"), "Scores" : [ 903, 10004, 84575, 844 ] }
ต่อไปนี้เป็นแบบสอบถามสำหรับคอลเลกชันย่อยต่อยอดในอาร์เรย์ -
> db.demo319.aggregate([ ... { $project: {TwoScores: { $slice: [ "$Scores", 2 ] } } } ... ])
สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -
{ "_id" : ObjectId("5e50ecf6f8647eb59e562064"), "TwoScores" : [ 100, 345 ] } { "_id" : ObjectId("5e50ed01f8647eb59e562065"), "TwoScores" : [ 903, 10004 ] }