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

จะกรองอาร์เรย์ในเอกสารย่อยด้วย MongoDB ได้อย่างไร


คุณสามารถใช้การรวมและคลายรายการอาร์เรย์ก่อนที่จะใช้การจับคู่ เพื่อให้เข้าใจแนวคิดข้างต้น ให้เราสร้างคอลเลกชันพร้อมเอกสาร แบบสอบถามเพื่อสร้างคอลเลกชันที่มีเอกสารมีดังนี้:

> db.filterArray.insertOne( { "L":[{ "N":1 }, { "N":2 } , { "N":3 }, { "N":4 }, { " N":5 } ]});

สิ่งต่อไปนี้สามารถมองเห็นได้หลังจากเรียกใช้แบบสอบถามด้านบน:

{ "รับทราบ" :จริง "insertedId" :ObjectId("5c6d63f2734e98fc0a434aeb")}

แสดงเอกสารจากคอลเล็กชันโดยใช้เมธอด find() แบบสอบถามมีดังนี้:

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

ต่อไปนี้เป็นผลลัพธ์:

{ "_id" :ObjectId("5c6d63f2734e98fc0a434aeb"), "L" :[ { "N" :1 }, { "N" :2 }, { "N" :3 }, { "N" :4 }, { "N" :5 } ]}

นี่คือแบบสอบถามเพื่อกรองอาร์เรย์ในเอกสารย่อยด้วย MongoDB เราใช้ $gt เพื่อรับฟิลด์ที่มากกว่า 3:

<ก่อนหน้า>> db.filterArray.aggregate({ $match:{_id:ObjectId("5c6d63f2734e98fc0a434aeb")}}, {$unwind:'$L'}, {$match:{'L.N':{$gt :3}}},{$group:{_id:'$_id',subDocument:{$push:'$L.N'}}}).pretty();

ต่อไปนี้เป็นผลลัพธ์:

{ "_id" :ObjectId("5c6d63f2734e98fc0a434aeb"), "subDocument" :[4, 5 ]}