2016-07-14 14 views
0

ich eine monboDB Sammlung mit ~ 500k Dokumente haben:

> db.test.find().count() 
491740 

Wenn ich Datensatz abfragen, wo crawled Schlüssel vorhanden ist:

> db.test.find({'crawled': {$exists: true}}).count() 
6451 

Aber wenn ich Dokumente abfragen ohne crawled Schlüssel:

> db.test.find({'crawled': {$exists: false}}).count() 
0 

Die Ergebnisse sind ähnlich mit Abfrage {$eq : null}

Ich verstehe nicht, warum Ergebnis 0 ist, mir bitte erklären!

Antwort

0

Es war ein issue wie die, die Sie beschreiben, wenn Sie einen reduzierten Index auf diesem Gebiet haben. Da der Sparse-Index keine Informationen über Dokumente speichert, die nicht über das Feld verfügen, findet die Abfrage bei Verwendung des Sparse-Indexes niemals Dokumente.
Je nach Ausgabestatus sollte dies behoben sein, aber Sie könnten eine ältere Version haben. In diesem Fall könnten Sie den Sparse-Index natürlich entweder aktualisieren oder durch einen regulären ersetzen.
Als Abhilfe Sie auch das gewünschte Ergebnis durch alle Dokumente zu zählen und dann Subtrahieren der eines mit $exists: true berechnen können.

+0

danke, ich werde das versuchen. –

Verwandte Themen