MongoDBで特定のデータ・値を取得するには?findOne()メソッドの使い方を解説
MongoDBで特定のデータを返すには?
MongoDBで特定のデータや値を取得したい場合は、findOne()メソッドを使用します。findOne()は、コレクションに対して指定された検索条件を満たすドキュメントを1件だけ返すメソッドです。条件に一致するドキュメントが複数存在する場合でも、最初に見つかった1件のみが返される点に注意してください。
この記事では、実際にコレクションを作成し、findOne()を使って特定のデータを取得する手順をサンプルコードとともに紹介します。
サンプルコレクションの作成
まず、insertOne()メソッドを使って、ドキュメントを格納したコレクションを作成します。
> db.demo473.insertOne(
... {
... "_id" : new ObjectId(),
... "Name" : "Chris",
... "details" : {
... "X-Coordinate" :10,
... "Y-Coordinate" :15
... }
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e805a07b0f3fa88e227907d")
}
> db.demo473.insertOne(
... {
... "_id" : new ObjectId(),
... "Name" : "Bob",
... "details" : {
... "X-Coordinate" :11,
... "Y-Coordinate" :12
... }
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e805a07b0f3fa88e227907e")
}
上記のコマンドでは、「Name」と座標情報(X-Coordinate、Y-Coordinate)を持つ2つのドキュメントを「demo473」コレクションに挿入しています。
find()メソッドで全ドキュメントを確認
次に、find()メソッドを使って、コレクション内のすべてのドキュメントを表示してみましょう。
> db.demo473.find();
このクエリを実行すると、以下のような出力が得られます。
{ "_id" : ObjectId("5e805a07b0f3fa88e227907d"), "Name" : "Chris", "details" : { "X-Coordinate" : 10, "Y-Coordinate" : 15 } }
{ "_id" : ObjectId("5e805a07b0f3fa88e227907e"), "Name" : "Bob", "details" : { "X-Coordinate" : 11, "Y-Coordinate" : 12 } }findOne()で特定のデータを取得する
それでは、MongoDBのfindOne()関数を使って、特定のデータを返すクエリを見ていきましょう。ここでは、「details.X-Coordinate」が11であるドキュメントを検索します。
> db.demo473.findOne({ 'details.X-Coordinate':11 })実行すると、以下のように条件に一致したドキュメントが1件だけ返されます。
{
"_id" : ObjectId("5e805a07b0f3fa88e227907e"),
"Name" : "Bob",
"details" : {
"X-Coordinate" : 11,
"Y-Coordinate" : 12
}
}まとめ
MongoDBで特定のデータを1件だけ取得したい場合は、findOne()メソッドが便利です。ネストされたフィールド(今回の例では「details.X-Coordinate」)もドット記法で指定できるため、柔軟な条件検索が可能です。全件取得したい場合はfind()を、先頭の1件だけ取得したい場合はfindOne()を使い分けるとよいでしょう。
-
MongoDBで特定の値以上のドキュメントを検索する方法($gte演算子の使い方)
MongoDBで特定の値「以上」の値を持つドキュメントを検索したい場合、比較演算子 $gte(greater than or equal)を使用します。$gte は指定した値と等しいか、それより大きい値に一致するドキュメントを抽出できる便利な演算子です。$gteを使った基本構文db.yourCollectionName.find({yourFieldName:{$gte:yourValue}});コレクション名、フィールド名、基準となる値をそれぞれ置き換えて使用します。なお、「より大きい」値のみを取得したい場合は $gt を使いますが、ここでは「以上」を意味する $gte を採用しています。サ
-
MongoDBで配列をクエリして特定の値を取得する方法
配列から特定の値を取得するには、aggregate()メソッドと$projectステージを組み合わせて使用します。まずは、ドキュメントを含むコレクションを作成してみましょう。 > db.demo761.insertOne( ... { ... "details": [ ... { ... "