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

Truy vấn MongoDB với elemMatch cho dữ liệu mảng lồng nhau

Truy vấn của bạn chỉ đơn giản là trả về tất cả tài liệu có chứa modules phần tử trong đó name == 'foo' . Để sử dụng $elemMatch để lọc đầu ra, bạn cần sử dụng nó trong đối số chiếu của find gọi thay vì một phần của truy vấn:

db.test.find({}, {modules: {$elemMatch: {name: 'foo'}}})

Để kết hợp cả hai khái niệm, bạn có thể tham chiếu chỉ mục của phần tử mảng được so khớp trong truy vấn với $ :

db.test.find({modules: {$elemMatch: {name: 'foo'}}}, {'modules.$': 1})

Dù theo cách nào thì cũng trả về:

{
  "_id": ObjectId("..."),
  "modules": [
    {
      "name": "foo",
      "mandatory": false,
      "group": [
        {
          "name": "g1"
        }
      ]
    }
  ]
}

Nếu bạn cần các trường khác có trong đầu ra, hãy thêm chúng vào đối tượng chiếu (ví dụ:name: 1 ).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Khởi động PHP Không thể tải thư viện động php_mongo.dll

  2. Cách tốt nhất để lưu trữ ngày tháng trong MongoDB là gì?

  3. Tại sao lược đồ của tôi không thêm giá trị mặc định trong mảng mongoose?

  4. Cách MongoDB kích hoạt học máy

  5. Hiểu về giới hạn kích thước tài liệu MongoDB BSON