web-dev-qa-db-ja.com

Mongo:特定のフィールドを持たないアイテムを検索する

MongoDBの特定のフィールドが欠落しているコレクション内のドキュメントを検索する方法は?

105
bcmcfc

ええ、それは $ exists を使用して可能です:

db.things.find( { a : { $exists : false } } ); // return if a is missing

Trueの場合、$ existsは、フィールド値がnullのドキュメントを含む、フィールドを含むドキュメントと一致します。 falseの場合、クエリはフィールドを含まないドキュメントのみを返します。

166
Andrew Orsich

フィールドが欠落しているかnullかどうか(またはnullにならない場合)を気にしない場合は、少し短いandより安全なものを使用できます。

db.things.find( { a : null } ); // return if a is missing or null

$existsは、フィールドがnullの場合でもtrueを返します。これは多くの場合、望ましい結果ではなく、NPEにつながる可能性があります。

50
nilskp