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

$ chiếu so với $ elemMatch

Sự khác biệt trong cách sử dụng chiếu có phần nhỏ. Trong cách sử dụng ví dụ của bạn, đây phải là các truy vấn tương đương (về cách sử dụng chỉ mục) nhưng là $elemMatch ví dụ lặp lại các tiêu chí truy vấn một cách không cần thiết. $ phép chiếu sẽ là một lựa chọn hợp lý hơn cho ví dụ này.

Một sự khác biệt cơ bản được lưu ý trong tài liệu là mảng giới hạn lĩnh vực cho $ dự báo:

Một số lưu ý thêm về sự khác biệt trong các toán tử phép chiếu bên dưới ...

vị trí ($ ) toán tử chiếu :

  • giới hạn nội dung của trường mảng được bao gồm trong kết quả truy vấn để chứa phần tử đầu tiên phù hợp với tài liệu truy vấn.

  • yêu cầu trường mảng phù hợp được đưa vào tiêu chí truy vấn

  • chỉ có thể được sử dụng nếu một trường mảng duy nhất xuất hiện trong tiêu chí truy vấn

  • chỉ có thể được sử dụng một lần trong phép chiếu

$elemMatch toán tử chiếu

  • giới hạn nội dung của trường mảng được bao gồm trong kết quả truy vấn để chỉ chứa phần tử mảng đầu tiên phù hợp với điều kiện $ elemMatch .

  • không yêu cầu mảng phù hợp nằm trong tiêu chí truy vấn

  • có thể được sử dụng để so khớp nhiều điều kiện cho các phần tử mảng là tài liệu được nhúng

$elemMatch toán tử truy vấn

Lưu ý rằng cũng có $elemMatch toán tử truy vấn thực hiện đối sánh tương tự, nhưng trong truy vấn chứ không phải trong phép chiếu kết quả. Không có gì lạ khi thấy điều này được sử dụng kết hợp với $ phép chiếu.

Mượn ví dụ từ tài liệu nơi bạn có thể sử dụng cả hai:

db.students.find(
    // use $elemMatch query operator to match multiple criteria in the grades array
    { grades: {
        $elemMatch: {
            mean:  { $gt: 70 },
            grade: { $gt: 90 }
        }
    }},

    // use $ projection to get the first matching item in the "grades" array
    { "grades.$": 1 }
)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Di chuyển dữ liệu từ Oracle sang Mongo DB

  2. Tại sao không nên sử dụng các hàm được lưu trữ phía máy chủ trong MongoDB?

  3. Dữ liệu tham chiếu NoSql

  4. Trình điều khiển mongo c:Làm thế nào để truy vấn tài liệu với _id trong danh sách?

  5. Thực hiện cập nhật trên đường dẫn '_id' sẽ sửa đổi trường bất biến '_id'