MongoDBで特定のフィールドを条件にドキュメントを検索する方法($or演算子の使い方)
MongoDBでは、複数のフィールドにまたがる条件を指定してドキュメントを検索できます。本記事では、$or 演算子を使って「名前(Name)」または「国名(CountryName)」のいずれかに一致するドキュメントを取得する方法を、実際のコード例とともに解説します。
1. コレクションの作成とドキュメントの挿入
まず、insertOne() メソッドを使用してサンプル用のコレクションを作成し、ドキュメントを挿入します。
> db.demo371.insertOne({"Name":"David","CountryName":"US"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e57f6982ae06a1609a00af2")
}
> db.demo371.insertOne({"Name":"John","CountryName":"UK"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e57f69e2ae06a1609a00af3")
}
> db.demo371.insertOne({"Name":"Bob","CountryName":"AUS"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e57f6a42ae06a1609a00af4")
}
> db.demo371.insertOne({"Name":"Mike","CountryName":"US"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e57f6ba2ae06a1609a00af5")
}これで、「Name」と「CountryName」という2つのフィールドを持つ4件のドキュメントが demo371 コレクションに登録されました。
2. find() メソッドですべてのドキュメントを表示
登録した内容を確認するために、find() メソッドを使ってコレクション内のすべてのドキュメントを表示します。
> db.demo371.find();
実行すると、以下のような出力が得られます。
{ "_id" : ObjectId("5e57f6982ae06a1609a00af2"), "Name" : "David", "CountryName" : "US" }
{ "_id" : ObjectId("5e57f69e2ae06a1609a00af3"), "Name" : "John", "CountryName" : "UK" }
{ "_id" : ObjectId("5e57f6a42ae06a1609a00af4"), "Name" : "Bob", "CountryName" : "AUS" }
{ "_id" : ObjectId("5e57f6ba2ae06a1609a00af5"), "Name" : "Mike", "CountryName" : "US" }3. 特定のフィールドを条件に検索するクエリ
ここからが本題です。特定のフィールドを条件に検索するには、$or 演算子を使用します。以下のクエリは、「Name が David」または「CountryName が UK」に一致するドキュメントをすべて取得します。
> db.demo371.find({ $or: [ { Name: "David" }, { CountryName: "UK"} ] } )このクエリを実行すると、次の出力が得られます。
{ "_id" : ObjectId("5e57f6982ae06a1609a00af2"), "Name" : "David", "CountryName" : "US" }
{ "_id" : ObjectId("5e57f69e2ae06a1609a00af3"), "Name" : "John", "CountryName" : "UK" }$or 演算子のポイント
$orには条件の配列を渡します。配列内のいずれか一つでも条件に一致すれば、そのドキュメントは結果に含まれます。- 上記の例では、David のドキュメント(CountryName は US)と、CountryName が UK の John のドキュメントの2件が該当しています。
- すべての条件に一致するドキュメントだけを取得したい場合は、
$and演算子を使用します。
このように、$or 演算子を活用することで、異なるフィールドに対する複数の検索条件を柔軟に組み合わせることができます。実際のアプリケーション開発でも、複数キーワードによる絞り込み検索などで頻繁に使われるテクニックなので、ぜひ覚えておきましょう。
-
MongoDBで特定フィールドの値を合計するクエリの書き方(aggregate + $sum)
MongoDBでは、aggregate()メソッドと$group・$sum演算子を組み合わせることで、コレクション内のドキュメントに含まれる特定フィールドの値を簡単に合計できます。この記事では、実際のコマンド例を使いながら手順をわかりやすく解説します。1. サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成します。ここではdemo677というコレクションに、Valueフィールドを持つ4件のドキュメントを挿入します。> db.demo677.insertOne({Value:10}); { acknowledged : true, insertedId :
-
MongoDBの_idフィールドを非表示にする方法
MongoDBの_idフィールドを非表示にする方法MongoDBでは、find()メソッドでドキュメントを検索すると、デフォルトで_idフィールド(ObjectId)が必ず結果に含まれます。しかし、射影(プロジェクション)という仕組みを使えば、この_idフィールドを非表示にし、必要なフィールドだけを取得することが可能です。本記事では、具体的な手順をサンプルコード付きで解説します。1. コレクションとドキュメントの作成まず、サンプル用のコレクションを作成し、ドキュメントを挿入します。> db.demo575.insertOne({id:101, Information:{Name:&quo