MongoDBでカーソル(Cursor)の最初のドキュメントを取得する方法【findOne()活用ガイド】
MongoDBのカーソルから最初のアイテムは取得できるのか?
結論から言うと、可能です。MongoDBでは、findOne()メソッドを使うことで、コレクション内の最初のドキュメントを簡単に取得できます。
基本構文
カーソル(Cursor)オブジェクトの最初のアイテムを取得するには、以下の構文を使用します。
db.yourCollectionName.findOne();
また、特定の条件に一致する1件だけのドキュメントを取得したい場合は、次のように条件を指定します。
db.yourCollectionName.findOne({yourCondition});サンプルコレクションの作成
実際に動作を確認するため、まずはサンプルとなるコレクションを作成しましょう。以下のクエリを実行して、ドキュメント付きのコレクションを作成します。
> db.getFirstItemDemo.insertOne({"CustomerName":"Chris","CustomerAge":28});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c989059330fd0aa0d2fe4c1")
}
> db.getFirstItemDemo.insertOne({"CustomerName":"Larry","CustomerAge":26});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c989063330fd0aa0d2fe4c2")
}
> db.getFirstItemDemo.insertOne({"CustomerName":"Robert","CustomerAge":29});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c98906d330fd0aa0d2fe4c3")
}
> db.getFirstItemDemo.insertOne({"CustomerName":"David","CustomerAge":39});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c989081330fd0aa0d2fe4c4")
}これで、「CustomerName(顧客名)」と「CustomerAge(顧客年齢)」を持つ4件のドキュメントが登録されました。
登録された全ドキュメントの確認
find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。
> db.getFirstItemDemo.find().pretty();
実行すると、次のような出力が得られます。
{
"_id" : ObjectId("5c989059330fd0aa0d2fe4c1"),
"CustomerName" : "Chris",
"CustomerAge" : 28
}
{
"_id" : ObjectId("5c989063330fd0aa0d2fe4c2"),
"CustomerName" : "Larry",
"CustomerAge" : 26
}
{
"_id" : ObjectId("5c98906d330fd0aa0d2fe4c3"),
"CustomerName" : "Robert",
"CustomerAge" : 29
}
{
"_id" : ObjectId("5c989081330fd0aa0d2fe4c4"),
"CustomerName" : "David",
"CustomerAge" : 39
}findOne()で最初のドキュメントを取得する
それでは、カーソルの最初のアイテムを取得してみましょう。引数なしでfindOne()を呼び出します。
> db.getFirstItemDemo.findOne();
実行結果は以下の通りです。
{
"_id" : ObjectId("5c989059330fd0aa0d2fe4c1"),
"CustomerName" : "Chris",
"CustomerAge" : 28
}このように、コレクション内で最も先頭にある「Chris」という顧客のドキュメントが1件だけ返されました。find()と違い、findOne()はカーソルではなく単一のドキュメントを直接返す点がポイントです。
条件を指定して特定の1件を取得する
続いて、条件を指定して該当する1件のドキュメントのみを取得する方法を見ていきましょう。ここでは「CustomerAgeが39」のドキュメントを検索します。
> db.getFirstItemDemo.findOne({"CustomerAge":39});実行結果:
{
"_id" : ObjectId("5c989081330fd0aa0d2fe4c4"),
"CustomerName" : "David",
"CustomerAge" : 39
}まとめ
- MongoDBでカーソルの最初のドキュメントを取得するには、
findOne()メソッドを使用します。 - 引数なしで呼び出せばコレクションの先頭ドキュメントが、条件を指定すればその条件に一致する最初の1件が返されます。
findOne()は最大でも1件しか返さないため、単一ドキュメントの取得に最適です。
-
MongoDBの$group操作でソートし、各グループの先頭ドキュメントのみを取得する方法
MongoDBの集計パイプラインでは、$sortでドキュメントを並べ替えた後に$groupと$firstを組み合わせることで、グループごとにソート結果の先頭1件だけを効率的に取得できます。本記事では、サンプルコレクションを作成しながら、その具体的な手順をわかりやすく解説します。サンプルコレクションの作成まず、insertOne()メソッドを使って、ドキュメントを含むコレクションを作成しましょう。> db.demo576.insertOne({id:101,Name:"Chris",Marks:45}){ "acknowledged" : tr
-
C#でタプルの最初の要素を取得する方法
C#でタプル(Tuple)の最初の要素を取得するには、Item1 プロパティを使用します。タプルは Tuple.Create() メソッドで簡単に生成でき、各要素には Item1、Item2、Item3…というように、番号付きのプロパティ経由でアクセスできます。例1:Item1プロパティで最初の要素を取得する以下のコードでは、2つの7要素のタプルを作成し、等価性の比較、ハッシュコードの取得、そして Item1 プロパティによる最初の要素の取得を行っています。using System; public class Demo { public static void Main(String[