【MongoDB】コレクション内の最後のドキュメント(オブジェクト)を取得するクエリの書き方
MongoDBのコレクションから最後のドキュメント(オブジェクト)を取得するには、まずsort()メソッドで値を並び替え、続いてlimit()メソッドで取得件数を指定します。最後の1件だけを取得したい場合は、limit(1)を組み合わせるのが基本のやり方です。
サンプルコレクションの作成
まずは、ドキュメントを含むコレクションを作成しましょう。ここでは例として「demo141」というコレクションに4件のドキュメントを挿入します。
> db.demo141.insertOne({"Name":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e31c347fdf09dd6d08539ae")
}
> db.demo141.insertOne({"Name":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e31c34bfdf09dd6d08539af")
}
> db.demo141.insertOne({"Name":"Bob"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e31c34ffdf09dd6d08539b0")
}
> db.demo141.insertOne({"Name":"Mike"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e31c352fdf09dd6d08539b1")
}
find()メソッドですべてのドキュメントを確認する
find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。
> db.demo141.find();
実行すると、以下のような出力が得られます。
{ "_id" : ObjectId("5e31c347fdf09dd6d08539ae"), "Name" : "Chris" }
{ "_id" : ObjectId("5e31c34bfdf09dd6d08539af"), "Name" : "David" }
{ "_id" : ObjectId("5e31c34ffdf09dd6d08539b0"), "Name" : "Bob" }
{ "_id" : ObjectId("5e31c352fdf09dd6d08539b1"), "Name" : "Mike" }
最後のオブジェクトを取得するクエリ
コレクション内の最後のオブジェクトを取得するには、以下のようにsort()とlimit()を組み合わせたクエリを実行します。
> db.demo141.find().sort({_id:-1}).limit(1);
sort({_id:-1})と指定することで、_idフィールドの降順にドキュメントが並び替えられます。ObjectIdは挿入順に生成されるため、降順ソートの先頭には最新(最後)のドキュメントが来ます。さらにlimit(1)を付けることで、その1件だけを取得できる仕組みです。
実行結果は以下の通りです。
{ "_id" : ObjectId("5e31c352fdf09dd6d08539b1"), "Name" : "Mike" }
このように、sort()とlimit()を組み合わせるだけで、コレクション内の最後のドキュメントを簡単に取得できます。タイムスタンプなど別のフィールドを基準にしたい場合も、同様にそのフィールドに対して降順ソートを指定すれば対応可能です。
-
MongoDBの$pull演算子で子コレクション内のオブジェクトを削除する方法
MongoDBで子コレクション(ネストされた配列)内のオブジェクトを削除するには、$pull 演算子を使用します。まず、ドキュメントを含むコレクションを作成してみましょう。 1. コレクションの作成とドキュメントの挿入 > db.demo715.insertOne({ ... _id: 1, ... details: [ ... { ... id: 101, ... Information: [ ... { ... studentid:
-
MongoDBのfind()クエリでネストされたドキュメントを取得する方法
MongoDBでネストされたドキュメント(入れ子になったサブドキュメントや配列内のオブジェクト)から値を取得するには、「ドット表記(dot notation)」を使用します。この記事では、サンプルコレクションを作成し、find()クエリを使ってネストされたデータを検索する具体的な手順を解説します。 サンプルコレクションの作成 まず、insert()メソッドを使ってドキュメントを含むコレクションを作成しましょう。 > db.demo591.insert([ ... { "Name": "John", "Age": 23 },