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

การฉายภาพ MongoDB เกี่ยวกับคุณสมบัติที่ซ้อนกันเฉพาะ?


สำหรับการฉายภาพคุณสมบัติที่ซ้อนกันเฉพาะ ให้ใช้ aggregate() ใน MongoDB ให้เราสร้างคอลเลกชันที่มีเอกสารก่อน -

> db.demo379.insertOne(
...    {
...       "details1" : {
...          "details2" : {
...             "details3" : {
...                "10" : "John",
...                "50" : "Chris",
...                "40" : "David",
...                "30":"Mike"
...             }
...          }
...       }
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e5a94f82ae06a1609a00b10")
}

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

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

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

{
   "_id" : ObjectId("5e5a94f82ae06a1609a00b10"),
   "details1" : {
      "details2" : {
         "details3" : {
            "10" : "John",
            "30" : "Mike",
            "40" : "David",
            "50" : "Chris"
         }
      }
   }
}

ต่อไปนี้เป็นแบบสอบถามสำหรับการฉายบนคุณสมบัติที่ซ้อนกันเฉพาะ -

> db.demo379.aggregate([
...    { "$addFields": {
...       "details1.details2.details3": {
...          "$arrayToObject": {
...             "$filter": {
...                "input": { "$objectToArray": "$details1.details2.details3" },
...                "as": "out",
...                "cond": {
...                   "$and": [
...                      { "$gte": ["$$out.k", "35"] },
...                      { "$lte": ["$$out.k", "60"] },
...                   ]
...                }
...             }
...          }
...       }
...    } }
... ])

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

{ "_id" : ObjectId("5e5a94f82ae06a1609a00b10"), "details1" : { "details2" : { "details3" : { "40" : "David", "50" : "Chris" } } } }