sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongo $exists-frågan returnerar inte korrekta dokument

Detta beror på att du använder ett sparsamt index för bcoded_metadata . Om du har ett sparsamt index på bcoded_metadata, kommer indexet inte att innehålla de dokument som inte har fältet bcoded_metadata . Dokumenten utan bcoded_metadata fältet är inte en del av din ursprungliga fråga, och därför returnerar "count" 0.

Om du bara kör sökningen:db.ts.find({"bcoded_metadata" : { "$exists" : false } }) då får du inget resultat heller. Du kan antingen använda ett icke-glest index eller göra en fullständig räkning med db.ts.count(); och subtrahera resultatet av db.ts.find({"bcoded_metadata" : { "$exists" : true } }) resultat.

Det finns en JIRA-biljett som förklarar det lite mer och kan spåras i fall MongoDB får ett fel-/varningsmeddelande för detta:https://jira.mongodb.org/browse/SERVER-3918




  1. MongoDb Aggregation Datamanipulation - Objekt till Arrayer

  2. Hur man tar bort nycklar som matchar ett mönster i Redis

  3. Varför finns det ett åtkomstbrott vid anslutning till MongoDB från C++?

  4. MongoDB korsdatabasfråga