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

การรวม MongoDB และการฉายภาพ?


สำหรับสิ่งนี้ ให้ใช้ $project พร้อมกับ aggregate() การรวม $project จะส่งผ่านเอกสารพร้อมกับฟิลด์ที่ร้องขอไปยังขั้นตอนถัดไปในไปป์ไลน์

ให้เราสร้างคอลเลกชันที่มีเอกสาร -

> db.demo762.insertOne({
...    "_id" : {
...       "userId":101,
...       "userName":"Chris"
...    },
..   . "countryName" : "US",
...
...    "details" : [
...       {
...          "Name" : "Robert",
...          "DueDate" : "2020-04-10"
...
...       },
...
...       {
...          "Name" : "Robert",
...          "DueDate" : "2020-04-09"
...       },
...       {
...          "Name" : "Robert",
...          "DueDate" : "2020-03-06"
...       }
...    ]
... }
... );
{
   "acknowledged" : true,
   "insertedId" : {
      "userId" : 101,
      "userName" : "Chris"
   }
}

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

> db.demo762.find();

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

{ "_id" : { "userId" : 101, "userName" : "Chris" }, "countryName" : "US", "details" : [ { "Name" : "Robert", "DueDate" : "2020-04-10" }, { "Name" : "Robert", "DueDate" : "2020-04-09" }, { "Name" : "Robert", "DueDate" : "2020-03-06" } ] }

ต่อไปนี้เป็นแบบสอบถามสำหรับการรวม MongoDB และการฉายภาพ -

> db.demo762.aggregate([
...    { "$match": {
...       "_id": { "$eq": { userId:101,userName:"Chris" }}
...    }},
...    { "$unwind": "$details" },
...    { "$sort": { "details.DueDate": 1 }},
...    { "$group": {
...       "_id": "$_id",
...       "details": { "$push": "$details" },
...       "countryName": { "$first": "$countryName" }
...    }},
... { "$project": { "details": { "$slice": ["$details", 2] } ,"countryName": 1 }}
... ]).pretty();

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

{
   "_id" : {
      "userId" : 101,
      "userName" : "Chris"
   },
   "countryName" : "US",
   "details" : [
      {
         "Name" : "Robert",
         "DueDate" : "2020-03-06"
      },
      {
         "Name" : "Robert",
         "DueDate" : "2020-04-09"
      }
   ]
}