MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Zapytanie Mongodb wolno z notacją kropkową

Twój explain() dane wyjściowe sugerują, że:

  1. Istnieje 10962 obiektów, które mają key.a : 456213154 . Twój db.collection.find({"key.a": 456213154}) zapytanie użyło indeksu na key.a i zwrócił 10962 obiektów.

  2. W Twojej kolekcji jest 0 obiektów, które mają key.a : 456213154 i mieć key.b : { $exists : true } . db.collection.find({"key": {"a": 456213154, "b": {"$exists":true}}}) zapytanie użyło twojego indeksu na kluczu.

Zobacz n wartość dla każdego zapytania - jest to zwracana liczba; i cursor wartość - to jest BtreeCursor jeśli używany jest indeks. W tym przypadku miałoby sens, dlaczego pierwsze zapytanie trwa znacznie dłużej, ponieważ ma znacznie więcej obiektów do zwrócenia.

Czy na pewno dokumenty z key.a : 456213154? wartości mają również key.b wartości?

Edycja:

Zapytanie z $exists param to niewłaściwa składnia do sprawdzania istnienia w osadzonych dokumentach.

Wypróbuj 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. Mongodb $lookup w danych wiosennych mongo

  2. Ekwiwalent upsert meteoru

  3. Zobacz postęp długo działającego zadania agregacji mongodb

  4. Zmiana nazwy pola w osadzonym dokumencie w tablicy w MongoDB nie działa

  5. MongoDB:Jak przedstawić schemat w pracy dyplomowej?