MongoDBで特定のフィールド値を取得する方法|$in演算子の使い方を解説
$in演算子とは
MongoDBで特定のフィールド値を持つドキュメントを取得するには、$in演算子を使用します。$in演算子は、フィールドの値が指定した配列内のいずれかの値と一致するドキュメントを選択します。さらに、プロジェクション(クエリの第2引数)を組み合わせることで、必要なフィールドだけを抽出することも可能です。
コレクションの作成とドキュメントの挿入
まず、createIndex()メソッドでインデックスを作成し、insertOne()メソッドを使ってサンプル用のコレクションにドキュメントを挿入してみましょう。
> db.indexesDemo.createIndex({"StudentFirstName":1});
{
"createdCollectionAutomatically" : true,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
> db.indexesDemo.insertOne({"StudentFirstName":"John","StudentLastName":"Smith"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e06de4d25ddae1f53b621dd")
}
> db.indexesDemo.insertOne({"StudentFirstName":"Chris","StudentLastName":"Brown"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e06de5825ddae1f53b621de")
}
> db.indexesDemo.insertOne({"StudentFirstName":"John","StudentLastName":"Doe"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e06de6725ddae1f53b621df")
}
> db.indexesDemo.insertOne({"StudentFirstName":"David","StudentLastName":"Miller"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e06de7225ddae1f53b621e0")
}
find()メソッドで全ドキュメントを確認する
find()メソッドを使用すると、コレクション内のすべてのドキュメントを表示できます。
> db.indexesDemo.find();
上記のクエリを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e06de4d25ddae1f53b621dd"), "StudentFirstName" : "John", "StudentLastName" : "Smith" }
{ "_id" : ObjectId("5e06de5825ddae1f53b621de"), "StudentFirstName" : "Chris", "StudentLastName" : "Brown" }
{ "_id" : ObjectId("5e06de6725ddae1f53b621df"), "StudentFirstName" : "John", "StudentLastName" : "Doe" }
{ "_id" : ObjectId("5e06de7225ddae1f53b621e0"), "StudentFirstName" : "David", "StudentLastName" : "Miller" }
$in演算子で特定のフィールド値だけを取得する
以下は、「John」または「David」という値がStudentFirstNameフィールドに含まれるドキュメントから、StudentFirstNameフィールドのみを取得するクエリです。プロジェクションで_idとStudentLastNameを0に設定することにより、これらのフィールドを結果から除外しています。
> db.indexesDemo.find(
... { StudentFirstName: { $in: [ "John", "David" ] } },
... { _id: 0, StudentLastName: 0 }
... );
このクエリを実行すると、次の出力が得られます。
{ "StudentFirstName" : "David" }
{ "StudentFirstName" : "John" }
{ "StudentFirstName" : "John" }
このように、$in演算子とプロジェクションを組み合わせることで、複数の条件値に一致するドキュメントから、必要なフィールドの値だけを効率的に取得できます。大量のデータから特定の項目だけを取り出したい場合に非常に便利なテクニックです。
-
MongoDBドキュメントから特定の値をフィルタリングする方法
MongoDBドキュメントから特定の値をフィルタリングする方法MongoDBでドキュメント内の配列から特定の値を抽出したい場合は、集計パイプラインで $filter を使用します。この記事では、実際にコレクションを作成し、特定の条件に一致する要素だけをフィルタリングする手順を、サンプルコードとともに解説します。1. サンプルコレクションの作成まず、insertOne() メソッドを使って、配列フィールドを含むドキュメントを持つコレクションを作成します。 db.demo751.insertOne( ... { ... _id: 101, ... details: [
-
MongoDBで配列をクエリして特定の値を取得する方法
配列から特定の値を取得するには、aggregate()メソッドと$projectステージを組み合わせて使用します。まずは、ドキュメントを含むコレクションを作成してみましょう。 > db.demo761.insertOne( ... { ... "details": [ ... { ... "