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

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件しか返さないため、単一ドキュメントの取得に最適です。
  1. MongoDBの$group操作でソートし、各グループの先頭ドキュメントのみを取得する方法

    MongoDBの集計パイプラインでは、$sortでドキュメントを並べ替えた後に$groupと$firstを組み合わせることで、グループごとにソート結果の先頭1件だけを効率的に取得できます。本記事では、サンプルコレクションを作成しながら、その具体的な手順をわかりやすく解説します。サンプルコレクションの作成まず、insertOne()メソッドを使って、ドキュメントを含むコレクションを作成しましょう。> db.demo576.insertOne({id:101,Name:"Chris",Marks:45}){ "acknowledged" : tr

  2. C#でタプルの最初の要素を取得する方法

    C#でタプル(Tuple)の最初の要素を取得するには、Item1 プロパティを使用します。タプルは Tuple.Create() メソッドで簡単に生成でき、各要素には Item1、Item2、Item3…というように、番号付きのプロパティ経由でアクセスできます。例1:Item1プロパティで最初の要素を取得する以下のコードでは、2つの7要素のタプルを作成し、等価性の比較、ハッシュコードの取得、そして Item1 プロパティによる最初の要素の取得を行っています。using System; public class Demo { public static void Main(String[