Mongo DB で複数フィールドを検索する方法

MongoDBでは複数フィールドクエリを使用して、複数の条件を満たすドキュメントを抽出できます。一般的な複数フィールドクエリの手法を以下に示します。

  1. 論理演算子を組み合わせて条件を指定することができる(例:$and、$or、$nor)。例えば、以下のクエリは、age フィールドが 30 より大きく、かつ、gender フィールドが “male” のドキュメントを返します。
db.collection.find({ $and: [ { age: { $gt: 30 } }, { gender: "male" } ] })
  1. 複数の条件を使う: find() メソッドには複数の条件をパラメータとして渡せます。例えば、以下のクエリは、age フィールドが 30 より大きく、gender フィールドが “male” のドキュメントを返します:
db.collection.find({ age: { $gt: 30 }, gender: "male" })
  1. $in演算子を使用:指定した配列の中にフィールドの値が含まれているドキュメントに一致させるために$in演算子を使用できます。たとえば、次のクエリはageフィールドの値が30、35、または40のドキュメントを返します。
db.collection.find({ age: { $in: [30, 35, 40] } })
  1. $regex演算子を利用:$regex演算子は正規表現マッチングに使用することができます。例えば、以下のクエリは name フィールドが “John” で始まるドキュメントを返します:
db.collection.find({ name: { $regex: /^John/ } })
  1. $elemMatch演算子を使用する: 配列フィールド内にある複数の条件を満たす要素を検索する場合、$elemMatch演算子を使用します。たとえば、次のクエリは、ageフィールドが30より大きく、genderフィールドが”male”である要素を含むドキュメントを返します。
db.collection.find({ arrayField: { $elemMatch: { age: { $gt: 30 }, gender: "male" } } })

具体的なクエリ要求に応じて適切な手法を選択して多フィールドクエリを実現する必要があります。上記の例は一般的な事例の一部にすぎず、MongoDBではさらに多くの高度なクエリ演算子や機能が提供されています。

bannerAds