MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

La requête Mongo $exists ne renvoie pas les documents corrects

C'est parce que vous utilisez un index clairsemé pour bcoded_metadata . Si vous avez un index clairsemé sur bcoded_metadata, alors l'index ne contiendra pas les documents qui n'ont pas le champ bcoded_metadata . Les documents sans les bcoded_metadata ne font pas partie de votre requête d'origine, et donc "count" renverra 0.

Si vous lancez uniquement la recherche :db.ts.find({"bcoded_metadata" : { "$exists" : false } }) alors vous n'obtiendrez aucun résultat non plus. Vous pouvez soit utiliser un index non clairsemé, soit faire un comptage complet avec db.ts.count(); et soustrayez le résultat de db.ts.find({"bcoded_metadata" : { "$exists" : true } }) résultat.

Il existe un ticket JIRA qui l'explique un peu plus et peut être suivi au cas où MongoDB recevrait un message d'erreur/d'avertissement pour cela :https://jira.mongodb.org/browse/SERVER-3918