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()メソッドを使えば、任意のフィールドを基準に柔軟にデータの並べ替えが可能です。大量のデータを扱う際は、ソート対象のフィールドにインデックスを作成しておくと、パフォーマンスの向上が期待できます。
-
【MongoDB】idがドキュメント内の配列フィールドの値と一致する場合に除外するクエリの書き方
MongoDBでは、ドキュメントの id フィールドの値が、同一ドキュメント内の配列型フィールド(例: subjectid)に含まれている場合に、そのドキュメントを検索結果から除外したいケースがあります。このような条件を実現するには、 $expr 演算子と組み合わせて $not および $in を使用します。本記事では、サンプルコレクションの作成からクエリの実行、出力結果の確認までを順を追って解説します。 サンプルコレクションの作成 まずは、動作確認用のドキュメントを含むコレクションを作成します。ここでは、 id フィールドと、文字列の配列を持つ subjectid フィールドを備えた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