MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

A consulta do Mongo $exists não retorna os documentos corretos


Isso ocorre porque você usa um índice esparso para bcoded_metadata . Se você tiver um índice esparso em bcoded_metadata, o índice não conterá os documentos que não possuem o campo bcoded_metadata . Os documentos sem o bcoded_metadata campo não fazem parte de sua consulta original e, portanto, "count" retornará 0.

Se você executar apenas o find:db.ts.find({"bcoded_metadata" : { "$exists" : false } }) então você também não obterá nenhum resultado. Você pode usar um índice não esparso ou fazer uma contagem completa com db.ts.count(); e subtraia o resultado de db.ts.find({"bcoded_metadata" : { "$exists" : true } }) resultado.

Há um ticket do JIRA que explica um pouco mais e pode ser rastreado caso o MongoDB receba uma mensagem de erro/aviso para isso:https://jira.mongodb.org/browse/SERVER-3918