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

MongoDBのAggregateで降順ソートし、上位レコードのみを取得する方法

MongoDBで降順にデータを並べ替えたい場合は、sort()メソッドに対して-1を指定します。この記事では、実際にコレクションを作成しながら、降順ソートによって上位レコードのみを取得する手順を解説します。

サンプルコレクションの作成

まず、insertOne()メソッドを使ってドキュメントを挿入し、コレクションを作成します。

> db.demo267.insertOne({id:100,"Name":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e4811951627c0c63e7dbaab")
}
> db.demo267.insertOne({id:100,"Name":"Adam"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e48119e1627c0c63e7dbaac")
}
> db.demo267.insertOne({id:100,"Name":"David"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e4811a51627c0c63e7dbaad")
}
> db.demo267.insertOne({id:100,"Name":"Bob"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e4811ab1627c0c63e7dbaae")
}

登録済みドキュメントの確認

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

> db.demo267.find().pretty();
{
   "_id" : ObjectId("5e4811951627c0c63e7dbaab"),
   "id" : 100,
   "Name" : "Chris"
}
{
   "_id" : ObjectId("5e48119e1627c0c63e7dbaac"),
   "id" : 100,
   "Name" : "Adam"
}
{
   "_id" : ObjectId("5e4811a51627c0c63e7dbaad"),
   "id" : 100,
   "Name" : "David"
}
{ "_id" : ObjectId("5e4811ab1627c0c63e7dbaae"), "id" : 100, "Name" : "Bob" }

降順ソートで上位レコードを取得する

ここでは、「Name」フィールドを基準に降順(-1)で並べ替え、limit(1)を組み合わせることで、先頭のレコードだけを取得します。

> db.demo267.find().sort({Name:-1}).limit(1);

実行結果

上記のクエリを実行すると、次のような出力が得られます。アルファベット順で最も後ろにある「David」が降順の先頭として返されていることがわかります。

{ "_id" : ObjectId("5e4811a51627c0c63e7dbaad"), "id" : 100, "Name" : "David" }

ポイントまとめ

  • sort({フィールド名: -1})で降順ソートを指定できる
  • limit(1)と組み合わせると、上位1件のレコードのみ取得可能
  • 昇順にしたい場合は「1」を指定する
  1. MongoDBで一意のレコードのみを表示し、重複データを除外する方法

    MongoDBのdistinct()メソッドで重複を除外するMongoDBで一意(ユニーク)なレコードのみを表示したい場合は、distinct()メソッドを使用します。このメソッドは、指定したフィールドの重複しない値だけを配列として返してくれます。ここでは、実際にサンプルコレクションを作成しながら、その使い方を確認していきましょう。1. サンプルコレクションの作成まず、insertOne()メソッドを使って、意図的に重複した名前を含むドキュメントをいくつか挿入します。> db.demo613.insertOne({Name:Chris});{ acknowledged : tru

  2. MySQLで最後のレコードを選択して更新する方法

    MySQLでテーブルの最後のレコードを選択して更新するには、ORDER BY DESCとLIMITを組み合わせて使用します。この記事では、実際の手順を順を追って解説します。1. テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> Name varchar(100) -> );Query OK, 0 rows affected (0.59 sec)2. レコードの挿入i