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

$elemMatch dengan perbedaan

Menebak tes.device_serial adalah array, ini kesalahan Anda :

 db.sessions.distinct("tests.device_serial", {"tests.device_serial" : {$ne: ""}})

Kueri dalam perintah Anda yang berbeda memfilter dokumen tempat larik 'menguji' berisi bidang bernama device_serial dengan nilai "", dan bukan hanya bidang dalam array.

Untuk mencapai apa yang Anda inginkan, Anda dapat menggunakan kerangka kerja agregasi, melepas array ke beberapa dokumen, memfilter dan mengelompokkan menurut null dengan perintah $addToSet untuk mendapatkan nilai yang berbeda.

Berikut pertanyaannya :

db.sessions.aggregate(
    [
        {
            $unwind: {
                path : "$tests"
            }
        },
        {
            $match: {
            "tests.device_serial":{$ne:""}
            }
        },
        {
            $group: {
              "_id":null,
                "device_serials":{$addToSet:"$tests.device_serial"}
            }
        },
    ]
);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Django dengan basis data NoSQL

  2. Menentukan Arsitektur Terbaik untuk Penyebaran Cluster MongoDB

  3. Luwak:CastError:Cast ke ObjectId gagal untuk nilai [objek Obyek] di jalur _id

  4. Bagaimana saya bisa menggunakan operator 'Tidak Suka' di MongoDB

  5. Alihkan nilai boolean dengan mongoDB