Mongodb: フィールドが存在するかどうかを確認する方法


次のメソッドを使用して、MongoDB のコレクションにフィールドが存在するかどうかを確認できます。

方法 1: フィールドが存在するかどうかを確認する

 db.myCollection.find({ " myField ": { $exists : true } })

このメソッドは、 myCollectionという名前のコレクションに「myField」が存在するかどうかを確認します。存在する場合、フィールド名を含むすべてのドキュメントが返されます。そうでない場合は、何も返しません。

方法 2: 埋め込みフィールドが存在するかどうかを確認する

 db.myCollection.find({ " myField.embeddedField ": { $exists : true } })

このメソッドは、フィールド「myField」内のフィールド名「embeddedField」がmyCollectionという名前のコレクションに存在するかどうかを確認します。存在する場合、フィールド名を含むすべてのドキュメントが返されます。そうでない場合は、何も返しません。

次の例は、次の文書を使用して収集チームで実際に各方法を使用する方法を示しています。

 db.teams.insertOne({team: "Mavs", class: {conf: "Western", div: "A"}, points: 31 })
db.teams.insertOne({team: "Spurs", class: {conf: "Western", div: "A"}, points: 22 })
db.teams.insertOne({team: "Jazz", class: {conf: "Western", div: "B"}, points: 19 })
db.teams.insertOne({team: "Celtics", class: {conf: "Eastern", div: "C"}, points: 26 })

例 1: フィールドが存在するかどうかを確認する

次のコードは、フィールド名「points」がチームコレクションに存在するかどうかを確認する方法を示しています。

 db.teams.find({ " points ": { $exists : true } })

このクエリは次のドキュメントを返します。

 { _id: ObjectId("6203d10c1e95a9885e1e7637"),
  team: 'Mavs',
  class: { conf: 'Western', div: 'A' },
  points: 31 }
{ _id: ObjectId("6203d10c1e95a9885e1e7638"),
  team: 'Spurs',
  class: { conf: 'Western', div: 'A' },
  points: 22 }
{ _id: ObjectId("6203d10c1e95a9885e1e7639"),
  team: 'Jazz',
  class: { conf: 'Western', div: 'B' },
  points: 19 }
{ _id: ObjectId("6203d10c1e95a9885e1e763a"),
  team: 'Celtics',
  class: { conf: 'Eastern', div: 'C' },
  points: 26 }

フィールド名「points」が存在するため、フィールド「points」を含む各ドキュメントが返されます。

代わりに、フィールド名「steals」がチームコレクションに存在するかどうかを確認するとします。

 db.teams.find({ " steals ": { $exists : true } })

このフィールドは存在しないため、出力は返されません。

例 2: 埋め込みフィールドが存在するかどうかを確認する

次のコードは、組み込みフィールド名「div」がチームコレクションの「class」フィールドに存在するかどうかを確認する方法を示しています。

 db.teams.find({ " class.div ": { $exists : true } })

このクエリは次のドキュメントを返します。

 { _id: ObjectId("6203d10c1e95a9885e1e7637"),
  team: 'Mavs',
  class: { conf: 'Western', div: 'A' },
  points: 31 }
{ _id: ObjectId("6203d10c1e95a9885e1e7638"),
  team: 'Spurs',
  class: { conf: 'Western', div: 'A' },
  points: 22 }
{ _id: ObjectId("6203d10c1e95a9885e1e7639"),
  team: 'Jazz',
  class: { conf: 'Western', div: 'B' },
  points: 19 }
{ _id: ObjectId("6203d10c1e95a9885e1e763a"),
  team: 'Celtics',
  class: { conf: 'Eastern', div: 'C' },
  points: 26 }

埋め込みフィールド「div」の名前はフィールド「class」に存在するため、埋め込みフィールド「div」を含むすべてのドキュメントが返されます。

代わりに、組み込みフィールド名「division」がチームコレクションの「class」フィールドに存在するかどうかを確認するとします。

 db.teams.find({ " class.division ": { $exists : true } })

この組み込みフィールドは存在しないため、出力は返されません。

: $exists関数の完全なドキュメントはここで見つけることができます。

追加リソース

次のチュートリアルでは、MongoDB で他の一般的な操作を実行する方法について説明します。

MongoDB: すべてのフィールド名をリストする方法
MongoDB: フィールドの名前を変更する方法
MongoDB: 新しいフィールドを追加する方法
MongoDB: フィールドを削除する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です