sql >> Base de Datos >  >> NoSQL >> MongoDB

La consulta Mongo $exists no devuelve los documentos correctos

Esto se debe a que utiliza un índice disperso para bcoded_metadata . Si tiene un índice disperso en bcoded_metadata, entonces el índice no contendrá los documentos que no tienen el campo bcoded_metadata . Los documentos sin los bcoded_metadata no forman parte de su consulta original y, por lo tanto, "recuento" devolverá 0.

Si ejecuta solo la búsqueda:db.ts.find({"bcoded_metadata" : { "$exists" : false } }) entonces tampoco obtendrás ningún resultado. Puede usar un índice no disperso o hacer un conteo completo con db.ts.count(); y reste el resultado de db.ts.find({"bcoded_metadata" : { "$exists" : true } }) resultado.

Hay un ticket de JIRA que lo explica un poco más, y se puede rastrear en caso de que MongoDB adquiera un mensaje de error/advertencia para esto:https://jira.mongodb.org/browse/SERVER-3918