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

Jak wysłać zapytanie do MongoDB, aby sprawdzić, czy element istnieje?

Ponieważ nie potrzebujesz licznika, upewnij się, że zapytanie powróci po znalezieniu pierwszego dopasowania. Ponieważ wydajność liczenia nie jest idealna, jest to dość ważne. Powinno to zapewnić następujące zapytanie:

db.Collection.find({ /* criteria */}).limit(1).size();

Zauważ, że find().count() domyślnie nie przestrzegaj limit klauzuli i może w związku z tym zwrócić nieoczekiwane wyniki (i spróbuje znaleźć wszystkie dopasowania). size() lub count(true) będzie honorować flagę limitu.

Jeśli chcesz posunąć się do skrajności, upewnij się, że Twoje zapytanie używa ukrytych indeksów. Objęte indeksy uzyskują dostęp tylko do indeksu, ale wymagają indeksowania pola, którego dotyczy zapytanie. Ogólnie powinno to wystarczyć, ponieważ count() oczywiście nie zwraca żadnych pól. Mimo to, pokryte indeksy czasami potrzebują raczej gadatliwych kursorów:

db.values.find({"value" : 3553}, {"_id": 0, "value" : 1}).limit(1).explain();

{
  // ...
  "cursor" : "BtreeCursor value_1",
  "indexOnly" : true,  // covered!
}

Niestety, count() nie oferuje explain() , więc trudno powiedzieć, czy warto, czy nie. Jak zwykle pomiary są lepszym towarzyszem niż teoria, ale teoria może przynajmniej uchronić Cię przed większymi problemami.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB zagregowane wypełnienie brakujących dni

  2. Meteor, definiuj kolekcje dynamicznie

  3. Współbieżność w gopkg.in/mgo.v2 (Mongo, Go)

  4. Zmiana katalogu magazynu danych MongoDB

  5. Mongoose i unikalne pole