sql >> Database >  >> NoSQL >> MongoDB

Mongodb-query traag met puntnotatie

Uw explain() outputs suggereren dat:

  1. Er zijn 10962 objecten met key.a : 456213154 . Uw db.collection.find({"key.a": 456213154}) query gebruikte de index op key.a , en heeft 10962 objecten geretourneerd.

  2. Er zijn 0 objecten in uw collectie met key.a : 456213154 en hebben key.b : { $exists : true } . De db.collection.find({"key": {"a": 456213154, "b": {"$exists":true}}}) query heeft uw index op sleutel gebruikt.

Zie de n waarde voor elke query - dit is het geretourneerde aantal; en de cursor waarde - dit is BtreeCursor als er een index wordt gebruikt. In dit geval zou het logisch zijn waarom de eerste zoekopdracht veel langer duurt, omdat er aanzienlijk meer objecten moeten worden geretourneerd.

Weet u zeker dat de documenten met key.a : 456213154 waarden hebben ook key.b waarden?

Bewerken:

De zoekopdracht met de $exists param is de verkeerde syntaxis om het bestaan ​​van ingesloten documenten te controleren.

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




  1. Eenvoudigste manier om de Mongodb PHP-extensie te installeren in Ubuntu 13.10 (saucy)?

  2. Bestand opslaan en ophalen in MongoDB met Java &GridFs

  3. Is het mogelijk om een ​​berekend veld van een MongoDB-query te retourneren?

  4. Werk een waarde in MongoDB bij op basis van de huidige waarde