MongoDBでコレクションの最初のドキュメントを取得する方法
MongoDBでコレクション内の最初のドキュメントを取得したい場合、findOne()メソッドを使用するのが最も簡単な方法です。この記事では、findOne()の基本的な使い方を、実際のサンプルコードと実行結果とともにわかりやすく解説します。
findOne()の基本構文
コレクションの最初のドキュメントを取得するには、以下の構文を使用します。
var anyVariableName = db.yourCollectionName.findOne(); // MongoDBコンソールで結果を表示するには、変数名を入力します yourVariableName
findOne()は、クエリ条件に一致したドキュメントのうち最初の1件のみを返すメソッドです。条件を指定しない場合は、コレクション内の最初のドキュメントが返されます。
サンプルコレクションの作成
まず、動作確認用にドキュメントを含むコレクションを作成しましょう。ここでは「retrieveFirstDocumentDemo」というコレクションに、4件のクライアント情報を挿入します。
> db.retrieveFirstDocumentDemo.insertOne({"ClientName":"Robert","ClientAge":23});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ca2325966324ffac2a7dc6d")
}
> db.retrieveFirstDocumentDemo.insertOne({"ClientName":"Chris","ClientAge":26});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ca2326266324ffac2a7dc6e")
}
> db.retrieveFirstDocumentDemo.insertOne({"ClientName":"Larry","ClientAge":29});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ca2326a66324ffac2a7dc6f")
}
> db.retrieveFirstDocumentDemo.insertOne({"ClientName":"David","ClientAge":39});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ca2327566324ffac2a7dc70")
}find()で全ドキュメントを確認する
比較のために、まずfind()メソッドを使ってコレクション内のすべてのドキュメントを表示してみましょう。
> db.retrieveFirstDocumentDemo.find().pretty();
このクエリを実行すると、以下のように4件すべてのドキュメントが出力されます。
{
"_id" : ObjectId("5ca2325966324ffac2a7dc6d"),
"ClientName" : "Robert",
"ClientAge" : 23
}
{
"_id" : ObjectId("5ca2326266324ffac2a7dc6e"),
"ClientName" : "Chris",
"ClientAge" : 26
}
{
"_id" : ObjectId("5ca2326a66324ffac2a7dc6f"),
"ClientName" : "Larry",
"ClientAge" : 29
}
{
"_id" : ObjectId("5ca2327566324ffac2a7dc70"),
"ClientName" : "David",
"ClientAge" : 39
}findOne()で最初のドキュメントを取得する
それでは、本題である「コレクションの最初のドキュメントの取得」を行います。以下のクエリを実行します。
> var firstDocumentOnly = db.retrieveFirstDocumentDemo.findOne(); > firstDocumentOnly
実行結果は以下のとおりです。最初に挿入した「Robert」のドキュメントのみが取得できていることがわかります。
{
"_id" : ObjectId("5ca2325966324ffac2a7dc6d"),
"ClientName" : "Robert",
"ClientAge" : 23
}find()とfindOne()の違い
両者の主な違いは以下のとおりです。
find():条件に一致するすべてのドキュメントをカーソルとして返します。結果を変数に代入しても、自動的には中身が表示されません。
findOne():条件に一致する最初の1件のドキュメントのみをドキュメント形式で返します。変数に代入した場合でも、変数名を入力するだけで中身を確認できます。
1件だけデータを確認したい場合や、存在チェックを行いたい場合には、findOne()が便利です。ぜひ実際の開発でも活用してみてください。
-
【MongoDB】ネストされた(入れ子構造の)ドキュメントを更新するクエリの書き方
MongoDBでは、入れ子(ネスト)になったサブドキュメントのフィールドを更新する際、update()メソッドとドット表記(dot notation)を組み合わせて使用します。ドット表記を使うことで、深い階層にあるフィールドを直接指定して値を変更できます。1. サンプルコレクションの作成まず、ネストされたドキュメントを含むコレクションを作成しましょう。以下のコマンドでdemo607というコレクションにドキュメントを挿入します。> db.demo607.insertOne( ... { ... id: 1, ... Info1 : { ...
-
Javaを使ってMongoDBコレクションのドキュメントをソートする方法
MongoDBコレクションからレコードを取得する際、結果として得られるドキュメントを特定のフィールドの値に基づいて並べ替え(ソート)したいケースはよくあります。MongoDBではsort()メソッドを使用することで、検索結果を昇順または降順に簡単に並べ替えることができます。基本構文MongoDBシェルでの基本的な構文は以下のとおりです。キーの値に「1」を指定すると昇順、「-1」を指定すると降順になります。db.COLLECTION_NAME.find().sort({KEY:1})Javaドライバでのsort()メソッドの使い方JavaのMongoDBライブラリにも同名のsort()メソッドが