sql >> Databáze >  >> NoSQL >> MongoDB

Dotaz Mongo $exists nevrací správné dokumenty

Je to proto, že pro bcoded_metadata používáte řídký index . Pokud máte řídký index na bcoded_metadata, pak index nebude obsahovat dokumenty, které nemají pole bcoded_metadata . Dokumenty bez bcoded_metadata pole nejsou součástí vašeho původního dotazu, a proto "count" vrátí 0.

Pokud spustíte pouze find:db.ts.find({"bcoded_metadata" : { "$exists" : false } }) pak také nedostanete žádné výsledky. Můžete buď použít index, který není řídký, nebo provést úplný počet pomocí db.ts.count(); a odečtěte výsledek db.ts.find({"bcoded_metadata" : { "$exists" : true } }) výsledek.

Existuje lístek JIRA, který to vysvětluje trochu více a lze jej sledovat v případě, že MongoDB obdrží chybovou/varovnou zprávu:https://jira.mongodb.org/browse/SERVER-3918




  1. správný způsob, jak vrátit formát json pomocí uzlu nebo expresu

  2. Jak používat $query, $hint nebo $explain z Javy

  3. Nahrazení vloženého dokumentu v poli v MongoDB

  4. Správa MySQL, MongoDB a PostgreSQL pomocí ChatOps od Slacku