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

MongoDBでFirstNameフィールドの値をソートする方法

MongoDBでドキュメントを並べ替える(ソートする)には、sort()メソッドを使用します。sort()には、ソートの基準となるフィールドと、昇順・降順を指定する値(1=昇順、-1=降順)を渡します。

ここでは、実際にサンプルコレクションを作成し、FirstNameフィールドの値でソートする手順を見ていきましょう。

1. コレクションの作成

まず、insertOne()メソッドを使って、複数のドキュメントを持つコレクション「demo365」を作成します。

> db.demo365.insertOne({"FirstName":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e57d5b6d0ada61456dc936f")
}
> db.demo365.insertOne({"FirstName":"Adam"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e57d5bad0ada61456dc9370")
}
> db.demo365.insertOne({"FirstName":"John"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e57d5bed0ada61456dc9371")
}
> db.demo365.insertOne({"FirstName":"Bob"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e57d5c0d0ada61456dc9372")
}

2. ドキュメントの確認

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

> db.demo365.find();

このクエリを実行すると、次のような出力が得られます。現時点では、挿入した順序のまま表示されていることがわかります。

{ "_id" : ObjectId("5e57d5b6d0ada61456dc936f"), "FirstName" : "Chris" }
{ "_id" : ObjectId("5e57d5bad0ada61456dc9370"), "FirstName" : "Adam" }
{ "_id" : ObjectId("5e57d5bed0ada61456dc9371"), "FirstName" : "John" }
{ "_id" : ObjectId("5e57d5c0d0ada61456dc9372"), "FirstName" : "Bob" }

3. FirstNameフィールドでソートする

次に、FirstNameフィールドの値を基準にソートを行います。以下がそのクエリです。

> db.demo365.find().sort({"FirstName":1});

実行結果は次のとおりです。

{ "_id" : ObjectId("5e57d5bad0ada61456dc9370"), "FirstName" : "Adam" }
{ "_id" : ObjectId("5e57d5c0d0ada61456dc9372"), "FirstName" : "Bob" }
{ "_id" : ObjectId("5e57d5b6d0ada61456dc936f"), "FirstName" : "Chris" }
{ "_id" : ObjectId("5e57d5bed0ada61456dc9371"), "FirstName" : "John" }

ご覧のとおり、ドキュメントがFirstNameのアルファベット順(Adam → Bob → Chris → John)に昇順で並べ替えられました。

降順でソートしたい場合

逆に、Z→Aの順(降順)で並べ替えたい場合は、sort()に渡す値を-1に変更します。

> db.demo365.find().sort({"FirstName":-1});

このように、MongoDBのsort()メソッドを使えば、任意のフィールドを基準に柔軟にデータの並べ替えが可能です。大量のデータを扱う際は、ソート対象のフィールドにインデックスを作成しておくと、パフォーマンスの向上が期待できます。

  1. 【MongoDB】idがドキュメント内の配列フィールドの値と一致する場合に除外するクエリの書き方

    MongoDBでは、ドキュメントの id フィールドの値が、同一ドキュメント内の配列型フィールド(例: subjectid)に含まれている場合に、そのドキュメントを検索結果から除外したいケースがあります。このような条件を実現するには、 $expr 演算子と組み合わせて $not および $in を使用します。本記事では、サンプルコレクションの作成からクエリの実行、出力結果の確認までを順を追って解説します。 サンプルコレクションの作成 まずは、動作確認用のドキュメントを含むコレクションを作成します。ここでは、 id フィールドと、文字列の配列を持つ subjectid フィールドを備えた2件のド

  2. MongoDBでforループを使用して値をプッシュ(挿入)する方法

    MongoDBでforループを使用して値をプッシュ(挿入)する方法MongoDBで値を繰り返しコレクションへ挿入(プッシュ)したい場合、save()メソッドとforループを組み合わせることで簡単に実現できます。ここでは、実際のコード例を交えながら手順を解説します。1. forループでドキュメントを作成するまず、forループを使ってコレクションにドキュメントを作成します。以下の例では、ループを6回まわして同じ内容のドキュメントを保存しています。> for(var v=1; v<7; v++) {... db.demo739.save({Name:Chris,SubjectName:M