MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách tìm kiếm trong mảng mảng đối tượng trong mongodb

Giả sử bạn muốn tìm kiếm awaiting trạng thái cho tập hợp users

db.users.find({"version.files.status":"awaiting"}).pretty()

Nó sẽ tự động tìm kiếm trong các mảng.

Tuy nhiên, việc cập nhật hơi khác một chút và bạn nên sử dụng arrayFilter :

db.users.updateOne(
  {
    "version.files._id": "606592b3c5d509071857f6e8",
  },
  {
    $set: {
      "version.$[version].files.$[file].url": "something else",
    },
  },
  {
    arrayFilters: [
      { "version._id": "606592b1c5d509071857f6e7" },
      { "file._id": "606592b3c5d509071857f6e8" },
    ],
  }
);

Đảm bảo có một chỉ mục trên find của bạn truy vấn:

Đối với ví dụ trên

db.users.createIndex({"version.files._id":1},{background:true})

Nhiều ví dụ khác có sẵn trên Mongo Doc

CHỈNH SỬA

Theo nhận xét của bạn, đây là một ví dụ hoạt động:

db.users.findOneAndUpdate(
  { "version.files._id": "606592b3c5d509071857f6e8" },
  {
    $set: {
      "version.$[version].files.$[file].url": "Test URL",
      "version.$[version].files.$[file].status": "Test status",
    },
  },
  {
    returnNewDocument: true,
    arrayFilters: [
      { "version._id": "606592b1c5d509071857f6e7" },
      { "file._id": "606592b3c5d509071857f6e8" },
    ],
  }
);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách tìm tài liệu và tài liệu phụ duy nhất phù hợp với các tiêu chí đã cho trong bộ sưu tập MongoDB

  2. Cách đăng ký và gọi một lược đồ trong mongoose

  3. Triển khai MongoDB bằng Docker

  4. Chỉ mục duy nhất MongoDB trên phần tử mảng trên các tài liệu (không phải trên tài liệu lồng nhau)

  5. Mongo - truy vấn, tài liệu được nhúng không khớp ngoại trừ ký hiệu dấu chấm