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

MongoDB, Banyak hitungan (dengan $ ada)

Anda memiliki ide dasar yang tepat tetapi $exists adalah kondisi kueri sehingga hanya valid dalam $match . Yang Anda inginkan adalah $ifNull operator untuk pada dasarnya melakukan hal yang sama:

db.mycollection.aggregate( [
    { "$group": {
        "_id" : { "user_id": "$user_id" },
        "requestA_count": { "$sum": {
            "$cond": [ { "$ifNull": ["$requestA", false] }, 1, 0 ]
        } },
        "requestB_count": { "$sum": {
            "$cond": [ { "$ifNull": ["$requestB", false] }, 1, 0 ]
        } },
        "requestC_count": { "$sum": {
            "$cond": [ { "$ifNull": ["$requestC", false] }, 1, 0 ]
        } },
    } },
    { "$project": {
        "_id": 0,
        "user_id": "$_id.user_id",
        "requestA_count": 1,
        "requestB_count": 1,
        "requestC_count": 1
    } }
] );

Jadi $ifNull baik mengembalikan nilai sekarang dari bidang jika ada atau argumen "sisi kanan" dikembalikan jika tidak. Nilai yang dikembalikan selain false ditafsirkan sebagai true ( kecuali tentu saja nilainya benar-benar salah ).

Pada dasarnya ini memberi Anda fungsionalitas yang sama untuk menguji secara logis keberadaan properti dalam dokumen.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Apakah mungkin untuk mengubah TimeZone default di MongoDB menggunakan Rails 3?

  2. Bagaimana menghubungkan php7 dengan mongoDB

  3. MongoDb - Kueri Array

  4. Bagaimana cara terbaik untuk menyimpan informasi tentang pewarisan di mongodb?

  5. Bagaimana cara menggunakan variabel di MongoDB Map-reduce map function