MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

【MongoDB】条件に一致する1件のドキュメントだけを取得する方法(findOneの使い方)

MongoDBで条件を満たす単一ドキュメントのみを取得するには?

MongoDBで条件に一致するドキュメントを1件だけ取得したい場合は、findOne()メソッドを使用します。find()は条件に合うすべてのドキュメントを返すのに対し、findOne()は最初に見つかった1件のみを返す点が大きな特徴です。

まずは、サンプルとなるコレクションを作成し、ドキュメントを挿入してみましょう。

> db.demo116.insertOne({"EmployeeId":101,"EmployeeName":"John"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2eff98d8f64a552dae635b")
}
> db.demo116.insertOne({"EmployeeId":102,"EmployeeName":"Bob"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2eff9fd8f64a552dae635c")
}
> db.demo116.insertOne({"EmployeeId":103,"EmployeeName":"David"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2effa5d8f64a552dae635d")
}
> db.demo116.insertOne({"EmployeeId":102,"EmployeeName":"Mike"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2effb7d8f64a552dae635e")
}

この時点で、EmployeeId: 102 のドキュメントが2件(BobとMike)存在することに注目してください。

find()ですべてのドキュメントを表示する

find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。

> db.demo116.find();

上記のコマンドを実行すると、次のような出力が得られます。

{ "_id" : ObjectId("5e2eff98d8f64a552dae635b"), "EmployeeId" : 101, "EmployeeName" : "John" }
{ "_id" : ObjectId("5e2eff9fd8f64a552dae635c"), "EmployeeId" : 102, "EmployeeName" : "Bob" }
{ "_id" : ObjectId("5e2effa5d8f64a552dae635d"), "EmployeeId" : 103, "EmployeeName" : "David" }
{ "_id" : ObjectId("5e2effb7d8f64a552dae635e"), "EmployeeId" : 102, "EmployeeName" : "Mike" }

findOne()で単一ドキュメントのみを検索する

続いて、MongoDBで1件のドキュメントのみを取得するクエリを見てみましょう。findOne()に検索条件を渡して実行します。

> db.demo116.findOne({"EmployeeId":102});

実行結果は以下のとおりです。

{
   "_id" : ObjectId("5e2eff9fd8f64a552dae635c"),
   "EmployeeId" : 102,
   "EmployeeName" : "Bob"
}

findOne()のポイント

  • 条件に一致するドキュメントが複数存在する場合でも、自然順序(挿入順)で最初の1件のみが返されます。この例では「Mike」ではなく「Bob」のドキュメントが返されています。
  • find()がカーソルを返すのに対し、findOne()ドキュメントそのものを直接返します。そのため、シェル上で整形された形で結果を確認できます。
  • ユニークな値での検索や、「どれか1件だけ取得できればよい」といったケースで特に便利です。

このように、findOne()を使えば条件に合うドキュメントの中から最初の1件だけを簡単に取り出すことができます。用途に応じてfind()と使い分けるとよいでしょう。

  1. MongoDBで条件に一致するドキュメントを1件だけ取得する方法

    MongoDBで、指定した検索条件に一致するドキュメントを1件だけ取得したい場合は、findOne()メソッドを使用します。findOne()は、コレクション内から条件を満たすドキュメントのうち、最初に見つかった1件のみを返すメソッドです。サンプルコレクションの作成まずは、動作確認用のコレクションにドキュメントを挿入してみましょう。> db.demo596.insertOne({_id:1,"FirstName":"John","LastName":"Smith"}); { "acknowledge

  2. MongoDBの埋め込みドキュメントから特定の要素を抽出する方法($unwind・$match・$projectの活用)

    MongoDBでは、配列形式の埋め込みドキュメントから特定の条件に合う要素だけを取り出したい場面がよくあります。そのような場合は、集計(Aggregation)パイプラインで $unwind、$match、$project を組み合わせることで、目的のデータを効率的に抽出できます。コレクションの作成とドキュメントの挿入まず、insertOne() メソッドを使って、学生情報を配列として持つコレクションを作成します。> db.demo744.insertOne( ... { ... studentInformation: ... [ ...