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

แบบสอบถาม MongoDB เพื่อส่งคืนเฉพาะเอกสารที่ฝังหรือไม่


ไม่สามารถส่งคืนเฉพาะเอกสารที่ฝังไว้ อย่างไรก็ตาม มันจะส่งคืนเอกสารทั้งหมดจากคอลเลกชัน ให้เราใช้แบบสอบถามต่อไปนี้เพื่อสร้างคอลเลกชันที่มีเอกสาร

>db.queryToEmbeddedDocument.insertOne({"UserName":"Larry","PostDetails":[{"UserMessage":"Hello","UserLikes":8},{"UserMessage":"Hi","UserLikes":6},{"UserMessage":"Good Morning","UserLikes":12},{"UserMessage":"Awesome","UserLikes":4}]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c988a9f330fd0aa0d2fe4bd")
}

ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงเอกสารทั้งหมดจากคอลเลกชันโดยใช้วิธี find()

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

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

{
   "_id" : ObjectId("5c988a9f330fd0aa0d2fe4bd"),
   "UserName" : "Larry",
   "PostDetails" : [
      {
         "UserMessage" : "Hello",
         "UserLikes" : 8
      },
      {
         "UserMessage" : "Hi",
         "UserLikes" : 6
      },
      {
         "UserMessage" : "Good Morning",
         "UserLikes" : 12
      },
      {
         "UserMessage" : "Awesome",
         "UserLikes" : 4
      }
   ]
}

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

> db.queryToEmbeddedDocument.find({"PostDetails.UserLikes": {$gte: 8}},{PostDetails:1}).pretty();

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

{
   "_id" : ObjectId("5c988a9f330fd0aa0d2fe4bd"),
   "PostDetails" : [
      {
         "UserMessage" : "Hello",
         "UserLikes" : 8
      },
      {
         "UserMessage" : "Hi",
         "UserLikes" : 6
      },
      {
         "UserMessage" : "Good Morning",
         "UserLikes" : 12
      },
      {
         "UserMessage" : "Awesome",
         "UserLikes" : 4
      }
   ]
}

ดูตัวอย่างผลลัพธ์ด้านบน เราได้รับเอกสารทั้งหมดในขณะที่เราต้องการเฉพาะเอกสารที่ “UserLikes” มากกว่าหรือเท่ากับ 8