MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

La query Mongo $exists non restituisce documenti corretti

Questo perché utilizzi un indice sparso per bcoded_metadata . Se hai un indice sparso su bcoded_metadata, l'indice non conterrà i documenti che non hanno il campo bcoded_metadata . I documenti senza i bcoded_metadata campo non fanno parte della query originale e quindi "count" restituirà 0.

Se esegui solo la ricerca:db.ts.find({"bcoded_metadata" : { "$exists" : false } }) quindi non otterrai alcun risultato. Puoi utilizzare un indice non sparsi o fare un conteggio completo con db.ts.count(); e sottrai il risultato di db.ts.find({"bcoded_metadata" : { "$exists" : true } }) risultato.

C'è un ticket JIRA che lo spiega un po' di più e può essere monitorato nel caso in cui MongoDB acquisisca un messaggio di errore/avviso per questo:https://jira.mongodb.org/browse/SERVER-3918