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

Mongo $exists-forespørgsel returnerer ikke korrekte dokumenter

Dette er fordi du bruger et sparsomt indeks til bcoded_metadata . Hvis du har et sparsomt indeks på bcoded_metadata, vil indekset ikke indeholde de dokumenter, der ikke har feltet bcoded_metadata . Dokumenterne uden bcoded_metadata felt er ikke en del af din oprindelige forespørgsel, og derfor vil "tælle" returnere 0.

Hvis du kun kører find:db.ts.find({"bcoded_metadata" : { "$exists" : false } }) så får du heller ingen resultater. Du kan enten bruge et ikke-sparsomt indeks eller lave en fuld optælling med db.ts.count(); og træk resultatet fra db.ts.find({"bcoded_metadata" : { "$exists" : true } }) resultat.

Der er en JIRA-billet, der forklarer det lidt mere, og som kan spores, hvis MongoDB får en fejl-/advarselsmeddelelse for dette:https://jira.mongodb.org/browse/SERVER-3918




  1. Sådan bruges decimaltype i MongoDB

  2. MongoDB-tjenesten kører ikke i Fedora

  3. mongo tilføje til indlejret array, hvis indtastningen ikke indeholder to felter, der matcher

  4. Brugerdefineret metode til opdateringsforespørgsel med forårsdata MongoRepository