MongoDBで配列内の値を照会するにはどうすればよいですか?
MongoDBでは、配列内の値を以下のように照会できます。
- 配列内の特定の値を照会する: $elemMatch 演算子を使用して配列内の特定の値を照会します。たとえば、grades という配列フィールドを持つ students コレクションがあるとします。次の構文を使用して配列内の特定の値を照会できます。
db.students.find({grades: {$elemMatch: {score: 90}}})
上記のクエリは、grades配列にスコアが90以上のものを少なくとも1つ含むドキュメントを返します。
- 特定の条件を満たす配列の値を検索するには、検索演算子($gt、$ltなど)を使用して配列内の特定の条件を満たす値を検索します。たとえば、配列grades内のスコアが80を超えるドキュメントを検索するには、次の構文を使用します。
db.students.find({grades: {$elemMatch: {score: {$gt: 80}}}})
上記のクエリは、grades配列の中の一つ以上のスコアが80を超えるドキュメントを返します。
- 配列の指定したインデックス位置の値を取得する:配列インデックスを使用して、配列内の指定した位置の値を取得できます。たとえば、grades配列のインデックス0のドキュメントを取得する必要がある場合は、次の構文を使用できます。
db.students.find({"grades.0": {$exists: true}})
上記のクエリは、grades配列にインデックス0のドキュメントが少なくとも1つ含まれているドキュメントを返します。
上述の例はあくまでもデモの目的ですので、現実のクエリは個々のコレクションとフィールドに合わせて調整してください。