MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongo $exists-Abfrage gibt keine korrekten Dokumente zurück

Dies liegt daran, dass Sie einen Sparse-Index für bcoded_metadata verwenden . Wenn Sie einen Sparse-Index für bcoded_metadata haben, enthält der Index keine Dokumente, die das Feld bcoded_metadata nicht haben . Die Dokumente ohne die bcoded_metadata -Feld sind nicht Teil Ihrer ursprünglichen Abfrage, daher gibt "count" 0 zurück.

Wenn Sie nur die Suche ausführen:db.ts.find({"bcoded_metadata" : { "$exists" : false } }) dann bekommst du auch keine ergebnisse. Sie können entweder einen Non-Sparse-Index verwenden oder mit db.ts.count(); eine vollständige Zählung durchführen und subtrahieren Sie das Ergebnis von db.ts.find({"bcoded_metadata" : { "$exists" : true } }) Ergebnis.

Es gibt ein JIRA-Ticket, das es etwas ausführlicher erklärt und nachverfolgt werden kann, falls MongoDB eine Fehler-/Warnmeldung dafür erhält:https://jira.mongodb.org/browse/SERVER-3918