MongoDBでは、$existsを使用できます 特定のフィールドを含むドキュメントを照合するための要素クエリ演算子。
また、特定のフィールドを含まないドキュメントと照合するためにも使用できます。
$ninなどの他の演算子と組み合わせて使用することもできます 特定のフィールドが存在するが、特定の値が含まれていないドキュメントと照合します。
例
catsというコレクションがあるとします。 次のドキュメントが含まれています:
{ "_id" : 1, "name" : "Scratch", "born" : "March, 2020" }
{ "_id" : 2, "name" : "Meow", "weight" : 30 }
{ "_id" : 3, "name" : "Fluffy", "height" : 15 }
{ "_id" : 4, "name" : "Sox", "weight" : 40 }
{ "_id" : 5, "name" : null, "weight" : 20 }
{ "_id" : 6, "height" : 20, "born" : ISODate("2021-01-03T23:30:15.123Z") }
これらの文書は、それらが持っている分野に関してわずかに矛盾しています。 weightを持つものもあります フィールド、他の人はheight フィールドには、bornがあるものもあります フィールドなど
$existsを使用できます 特定のフィールドを持つそのコレクションからドキュメントを返す演算子。
例:
db.cats.find( { weight: { $exists: true } } ) 結果:
{ "_id" : 2, "name" : "Meow", "weight" : 30 }
{ "_id" : 4, "name" : "Sox", "weight" : 40 }
{ "_id" : 5, "name" : null, "weight" : 20 }
weightを含むドキュメントのみが表示されます フィールドが返されます。
nullを含むフィールド
$exists 演算子には、nullを含むフィールドが含まれます 。 nullを区別しません および非null 値。
例:
db.cats.find( { name: { $exists: true } } ) 結果:
{ "_id" : 1, "name" : "Scratch", "born" : "March, 2020" }
{ "_id" : 2, "name" : "Meow", "weight" : 30 }
{ "_id" : 3, "name" : "Fluffy", "height" : 15 }
{ "_id" : 4, "name" : "Sox", "weight" : 40 }
{ "_id" : 5, "name" : null, "weight" : 20 }
nameにもかかわらず、ドキュメント5が返されたことがわかります。 フィールドはnull 。
特定の値なしで存在する
$existsを組み合わせることができます 他の演算子を使用して、フィールドを含むが、そのフィールドに特定の値が含まれていないドキュメントを返します。
例:
db.cats.find( { weight: { $exists: true, $nin: [20,30] } } ) 結果:
{ "_id" : 4, "name" : "Sox", "weight" : 40 }
これは、単に$ninを使用した場合に見られる結果とは異なります。 $existsなし オペレーター。
これがどのように見えるかです:
db.cats.find( { weight: { $nin: [20,30] } } ) 結果:
{ "_id" : 1, "name" : "Scratch", "born" : "March, 2020" }
{ "_id" : 3, "name" : "Fluffy", "height" : 15 }
{ "_id" : 4, "name" : "Sox", "weight" : 40 }
{ "_id" : 6, "height" : 20, "born" : ISODate("2021-01-03T23:30:15.123Z") } 特定のフィールドを含まないドキュメント
$exists: falseを使用できます しないドキュメントを返す 指定されたフィールドが含まれます。
例:
db.cats.find( { name: { $exists: false } } ) 結果:
{ "_id" : 6, "height" : 20, "born" : ISODate("2021-01-03T23:30:15.123Z") }
この場合、コレクション内の1つのドキュメントにnameが含まれていません フィールド。
複数のフィールドを確認する
複数のフィールドが存在するかどうかは、コンマで区切って確認できます。
例:
db.cats.find( {
name: { $exists: true },
height: { $exists: true }
} ) 結果:
{ "_id" : 3, "name" : "Fluffy", "height" : 15 }
この例では、nameの両方を含むすべてのドキュメントが返されます フィールドとheight フィールド。