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

Chọn tài liệu có cặp giá trị khóa cụ thể nhưng không có cặp giá trị khóa khác

Lần truy vấn của bạn sử dụng cùng một "khóa" hai lần. Bạn không thể làm điều đó trong một cấu trúc đối tượng vì về cơ bản bạn đang "ghi đè" giá trị của cùng một khóa. Vì vậy, truy vấn thực tế được xem xét chỉ là điều kiện "thứ hai" cho khóa đó.

Vì vậy, nếu bạn muốn có nhiều điều kiện cho cùng một khóa, hãy sử dụng $and nhà điều hành:

db.collection.aggregate([
    { "$match": {
        "$and": [
            { "genericParams.key": { "$exists": true, "$ne": "manual_funds_processed" } },
            { "genericParams.key": "third_sms_email_time" }
        ] 
    },
    // other stages
})

Hoặc vì tất cả các điều kiện MongoDB thực sự là đối số "và" theo mặc định, bạn cũng có thể chỉ định $eq trong trường hợp này:

db.collection.aggregate([
    { "$match": {
        "genericParams.key": { 
            "$ne": "manual_refund_processed", 
            "$eq": "third_sms_email_time"
        }
    }},
    // other stages
])

Lưu ý rằng không có gì đặc biệt về .aggregate() ở đây, vì nó chỉ là phần "truy vấn" cơ sở đang thực hiện công việc lựa chọn tài liệu.

Cũng lưu ý rằng có điều kiện "tích cực" ($eq ) không thực sự cần thiết để sử dụng $exists vì bạn đang kiểm tra nên ít nhất phần tử đó cần phải khớp.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Quản lý đa xử lý Python với MongoDB

  2. MongoDB Làm cách nào để nhận được tất cả các con trỏ đang mở HIỆN TẠI và các truy vấn mà chúng đang chạy?

  3. Làm cách nào để trả về boolean trong danh mục mongodb

  4. Làm cách nào để xóa các tweet trống bằng filter () trong pyspark?

  5. mongodb num_rows php tương đương