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

Có thể sử dụng MongoDB để truy vấn các mục nhập có giá trị cụ thể trong một trường trong một đối tượng trong một mảng không?

Có, để truy vấn một trường trong một đối tượng trong mảng với MongoDB, hãy sử dụng cú pháp sau -

db.yourCollectionName.find({"yourOuterFieldName": { $elemMatch: { "yourInnerFieldName": "yourValue" } } } ).pretty();

Để hiểu khái niệm trên, chúng ta hãy tạo một bộ sưu tập với tài liệu. Truy vấn để tạo một bộ sưu tập với một tài liệu như sau -

> db.objectInAnArrayDemo.insertOne({ "StudentDetails": [{
   "StudentName": "John", "StudentMessage": "Hi"}, {"StudentName": "Larry", "StudentMessage": "Hello"}]})
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c92635d36de59bd9de06381")
}
> db.objectInAnArrayDemo.insertOne({ "StudentDetails": [{
   "StudentName": "Carol", "StudentMessage": "Hello"}, {"StudentName": "David", "StudentMessage": "Good Morning"}]})
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c92637936de59bd9de06382")
}

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 (). Truy vấn như sau -

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

Sau đây là kết quả -

{
   "_id" : ObjectId("5c92635d36de59bd9de06381"),
   "StudentDetails" : [
      {
         "StudentName" : "John",
         "StudentMessage" : "Hi"
      },
      {
         "StudentName" : "Larry",
         "StudentMessage" : "Hello"
      }
   ]
}
{
   "_id" : ObjectId("5c92637936de59bd9de06382"),
   "StudentDetails" : [
      {
         "StudentName" : "Carol",
         "StudentMessage" : "Hello"
      },
      {
         "StudentName" : "David",
         "StudentMessage" : "Good Morning"
      }
   ]
}

Đây là truy vấn cho một trường trong một đối tượng trong mảng với MongoDB -

> db.objectInAnArrayDemo.find({"StudentDetails": { $elemMatch: { "StudentMessage": "Good Morning" } } } ).pretty();

Sau đây là kết quả -

{
   "_id" : ObjectId("5c92637936de59bd9de06382"),
   "StudentDetails" : [
      {
         "StudentName" : "Carol",
         "StudentMessage" : "Hello"
      },
      {
         "StudentName" : "David",
         "StudentMessage" : "Good Morning"
      }
   ]
}