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

Permintaan Mongodb lambat dengan notasi titik

explain() . Anda keluaran menunjukkan bahwa:

  1. Ada 10962 objek yang memiliki key.a : 456213154 . db.collection.find({"key.a": 456213154}) Anda kueri menggunakan indeks pada key.a , dan mengembalikan 10962 objek.

  2. Ada 0 objek dalam koleksi Anda yang memiliki key.a : 456213154 dan memiliki key.b : { $exists : true } . db.collection.find({"key": {"a": 456213154, "b": {"$exists":true}}}) kueri memang menggunakan indeks Anda pada kunci.

Lihat n nilai untuk setiap kueri - ini adalah nomor yang dikembalikan; dan cursor nilai - ini adalah BtreeCursor jika indeks digunakan. Dalam hal ini masuk akal mengapa kueri pertama membutuhkan waktu lebih lama, karena memiliki lebih banyak objek untuk dikembalikan secara signifikan.

Apakah Anda yakin bahwa dokumen dengan key.a : 456213154 nilai juga memiliki key.b nilai?

Sunting:

Kueri dengan $exists param adalah sintaks yang salah untuk memeriksa keberadaan dalam dokumen yang disematkan.

Coba db.collection.find({ "key.a" : 456213154, "key.b" : { "$exists" : true } }) .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Apakah Spring Data MongoDB mendukung fitur collation MongoDB 3.4?

  2. E11000 duplikat indeks kesalahan kunci di mongodb luwak

  3. Skema Tanggal Luwak

  4. Pilih Max() dengan grup oleh di mongodb

  5. hapus dokumen yang disematkan di mongoid