MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Pilih dokumen yang memiliki pasangan nilai kunci tertentu tetapi tidak memiliki pasangan nilai kunci lainnya

Upaya kueri Anda menggunakan "kunci" yang sama dua kali. Anda tidak dapat melakukannya dalam struktur objek karena pada dasarnya Anda "menimpa" nilai dari kunci yang sama. Jadi kueri sebenarnya yang dipertimbangkan hanyalah kondisi "kedua" untuk kunci itu.

Jadi jika Anda ingin memiliki beberapa ketentuan untuk kunci yang sama, gunakan $and operator:

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

Atau karena semua kondisi MongoDB benar-benar argumen "dan" secara default, Anda juga dapat menentukan $eq dalam hal ini:

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

Perhatikan di sini bahwa tidak ada yang istimewa dari .aggregate() di sini sendiri, karena hanya bagian "permintaan" dasar yang melakukan pekerjaan pemilihan dokumen.

Perhatikan juga, bahwa dengan kondisi "positif" ada ( $eq ) sebenarnya tidak perlu menggunakan $exists karena Anda sudah menguji bahwa setidaknya elemen tersebut harus cocok.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Database menggunakan JSON sebagai format penyimpanan/transportasi

  2. Antara kueri tanggal di MongoDB

  3. Hitung properti subdokumen dalam proyeksi menggunakan MongoDB dan Javascript

  4. mengakses objek mongodb dari mapper (MapReduce)

  5. AttributeError:objek 'tuple' tidak memiliki atribut 'insert'