Computer >> Máy Tính >  >> Lập trình >> MongoDB

Truy vấn MongoDB để chỉ trả về tài liệu nhúng?

Không thể chỉ trả về tài liệu nhúng. Tuy nhiên, nó sẽ trả về tất cả các tài liệu từ một bộ sưu tập. Trước tiên, hãy để chúng tôi triển khai truy vấn sau để tạo một bộ sưu tập với các tài liệu

>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")
}

Sau đây là truy vấn để hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find ()

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

Điều này sẽ tạo ra kết quả sau

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

Sau đây là truy vấn để trả lại tất cả các tài liệu từ một bộ sưu tập

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

Điều này sẽ tạo ra kết quả sau

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

Nhìn vào kết quả mẫu ở trên, chúng tôi đang nhận được tất cả các tài liệu trong khi chúng tôi chỉ muốn những tài liệu có “UserLikes” lớn hơn hoặc bằng 8.