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

MongoDB 4でドキュメントをソートし、特定の1つのフィールドだけを表示する方法

MongoDB 4でドキュメントを並べ替えるには、sort()メソッドを使用します。さらに、ソートした特定の1つのフィールドのみを表示したい場合は、プロジェクション(射影)を組み合わせて、表示したいフィールドに「1」を設定します。

この記事では、実際のコード例を使って手順を順番に解説していきます。

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

まず、insertOne()メソッドを使って、テスト用のコレクション「demo611」にドキュメントを登録します。

> db.demo611.insertOne({"Name":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e987110f6b89257f5584d83")
}
> db.demo611.insertOne({"Name":"Adam"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e987115f6b89257f5584d84")
}
> db.demo611.insertOne({"Name":"John"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e987118f6b89257f5584d85")
}
> db.demo611.insertOne({"Name":"Bob"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e98711bf6b89257f5584d86")
}

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

find()メソッドを実行すると、コレクション内のすべてのドキュメントを確認できます。現時点では、登録した順番どおりに表示されていることが分かります。

> db.demo611.find();
{ "_id" : ObjectId("5e987110f6b89257f5584d83"), "Name" : "Chris" }
{ "_id" : ObjectId("5e987115f6b89257f5584d84"), "Name" : "Adam" }
{ "_id" : ObjectId("5e987118f6b89257f5584d85"), "Name" : "John" }
{ "_id" : ObjectId("5e98711bf6b89257f5584d86"), "Name" : "Bob" }

3. sort()でドキュメントを並べ替える

Nameフィールドを基準に昇順(A→Z)でソートするには、sort()に { Name: 1 } を渡します。降順に並べ替えたい場合は「-1」を指定してください。

> db.demo611.find().sort({Name:1});

実行結果:

{ "_id" : ObjectId("5e987115f6b89257f5584d84"), "Name" : "Adam" }
{ "_id" : ObjectId("5e98711bf6b89257f5584d86"), "Name" : "Bob" }
{ "_id" : ObjectId("5e987110f6b89257f5584d83"), "Name" : "Chris" }
{ "_id" : ObjectId("5e987118f6b89257f5584d85"), "Name" : "John" }

4. 特定の1つのフィールドのみを表示する

ソート結果からNameフィールドだけを取り出すには、find()の第2引数にプロジェクションを指定します。_id: 0 とすることで、自動的に付与される _id フィールドも非表示にできます。

> db.demo611.find({}, {Name: 1, _id: 0}).sort({Name:1});

実行結果:

{ "Name" : "Adam" }
{ "Name" : "Bob" }
{ "Name" : "Chris" }
{ "Name" : "John" }

まとめ

  • ドキュメントの並べ替えには sort() を使用する(昇順:1 / 降順:-1)
  • 特定のフィールドのみ表示するには、find()の第2引数でプロジェクションを指定する
  • _id を非表示にする場合は「_id: 0」を明示的に指定する

sort()とプロジェクションを組み合わせれば、必要なデータだけを効率よく取得できます。これにより、アプリケーション側の処理負荷やネットワーク通信量の削減にもつながるため、実務でも非常に役立つテクニックです。

  1. 【MongoDB】ネストされたドキュメントのキー名のみを抽出して表示する方法

    MongoDBでは、配列内にネストされたドキュメント(サブドキュメント)のキー名だけを一覧として取得したいケースがあります。本記事では、insertOne()でサンプルデータを作成し、find()で内容を確認した後、集計パイプラインの$reduce、$objectToArray、$map、$concatArraysを組み合わせて、ネストされたドキュメントのキー名のみを抽出する方法を実行例付きで解説します。 1. サンプルコレクションの作成 まず、insertOne()メソッドを使って、detailsフィールドに複数のドキュメントを持つ配列を含むコレクションを作成します。 > db.dem

  2. MySQLのORDER BY FIELDを使って特定の値を優先し、ID順に並べ替える方法

    はじめにMySQLでは、ORDER BY FIELD() を活用することで、特定の値を持つレコードを最優先で表示しつつ、残りのレコードをIdなどの別の列基準で並べ替えることができます。この記事では、実際のサンプルコードを通してその手順をわかりやすく解説します。サンプルテーブルの作成まず、テーブルを作成しましょう。mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> ); Query OK, 0 rows affected (1.78 sec)次に、I