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

Permintaan Mongo $exists tidak mengembalikan dokumen yang benar

Ini karena Anda menggunakan indeks sparse untuk bcoded_metadata . Jika Anda memiliki indeks sparse pada bcoded_metadata, maka indeks tidak akan berisi dokumen yang tidak memiliki bidang bcoded_metadata . Dokumen tanpa bcoded_metadata bidang bukan bagian dari kueri asli Anda, dan karenanya "hitungan" akan mengembalikan 0.

Jika Anda hanya menjalankan find:db.ts.find({"bcoded_metadata" : { "$exists" : false } }) maka Anda juga tidak akan mendapatkan hasil apa pun. Anda dapat menggunakan indeks non-jarang, atau melakukan penghitungan penuh dengan db.ts.count(); dan kurangi hasil db.ts.find({"bcoded_metadata" : { "$exists" : true } }) hasil.

Ada tiket JIRA yang menjelaskannya sedikit lebih banyak, dan dapat dilacak jika MongoDB memperoleh pesan kesalahan/peringatan untuk ini:https://jira.mongodb.org/browse/SERVER-3918




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Meningkatkan batas memori untuk pekerjaan agregat mongodb

  2. Kapan mengindeks, apa yang harus diindeks di Mongoid?

  3. duplikat koleksi ke dalam dirinya sendiri

  4. Bahaya Membangun Indeks di MongoDB

  5. Buat kueri dinamis dengan Mongoose