MongoDBには、ドキュメントを特定の順序で並べ替える方法がいくつか用意されています。これらのそれぞれにより、ドキュメントを昇順または降順で並べ替えることができます。
$text
の結果を注文するオプションもあります 検索–計算されたtextScore
による並べ替え 降順のメタデータ。
MongoDBでドキュメントを並べ替える3つの方法は次のとおりです。
cursor.sort()
方法
cursor.sort()
メソッドは、クエリが一致するドキュメントを返す順序を指定します。
employees
というコレクションがあるとします。 次のドキュメントを使用:
{ "_id" : 1, "name" : "Bob", "salary" : 55000 } { "_id" : 2, "name" : "Sarah", "salary" : 128000 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 4, "name" : "Christopher", "salary" : 45000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 } { "_id" : 6, "name" : "Homer", "salary" : 1 } { "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 } { "_id" : 8, "name" : "Zoro", "salary" : 300000 } { "_id" : 9, "name" : "Xena", "salary" : 382000 }
これらのドキュメントをsalary
で並べ替えて返す例を次に示します。 昇順のフィールド、およびそれらの_id
フィールド:
db.employees.find().sort( { salary: 1, _id: 1 } )
結果:
{ "_id" : 6, "name" : "Homer", "salary" : 1 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 4, "name" : "Christopher", "salary" : 45000 } { "_id" : 1, "name" : "Bob", "salary" : 55000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 } { "_id" : 2, "name" : "Sarah", "salary" : 128000 } { "_id" : 8, "name" : "Zoro", "salary" : 300000 } { "_id" : 9, "name" : "Xena", "salary" : 382000 } { "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 }
ここでは、1
を使用しました 昇順。降順で必要な場合は、単に-1
を使用します。 代わりに。
_id
を含めた理由 注文のフィールドは、2人以上の従業員が同じ給与を持っている場合、_id
であるためです。 フィールドを使用して、それらのドキュメントをそれらの間で並べ替えることができます。
これは些細なことのように思えるかもしれませんが、クエリを実行するたびにMongoDBがこれらのドキュメントを異なる順序で返すのを防ぎます。
$text
の結果を並べ替えることもできます 探す。 MongoDB sort()
を参照してください 例として。
$sort
集約パイプラインステージ
集約パイプラインフレームワークを使用する場合は、$sort
を使用できます。 すべての入力ドキュメントを並べ替えて、並べ替えられた順序でパイプラインに返すステージ。
$sort
の使用方法は次のとおりです 前の例と同じ結果を返します。ただし、降順で並べ替えましょう。 今回の注文:
db.employees.aggregate(
[
{ $sort : { salary : -1, _id: 1 } }
]
)
結果:
{ "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 } { "_id" : 9, "name" : "Xena", "salary" : 382000 } { "_id" : 8, "name" : "Zoro", "salary" : 300000 } { "_id" : 2, "name" : "Sarah", "salary" : 128000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 } { "_id" : 1, "name" : "Bob", "salary" : 55000 } { "_id" : 4, "name" : "Christopher", "salary" : 45000 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 6, "name" : "Homer", "salary" : 1 }
$text
の結果を並べ替えることもできます 探す。 MongoDB $sort
を参照してください 例として。
$orderBy
クエリ修飾子
$orderBy
クエリ修飾子は、2つの形式のいずれかで使用できます。
このように:
db.employees.find( { $query: {}, $orderBy: { salary: 1 } } )
またはこのように::
db.employees.find()._addSpecial( "$orderby", { salary : 1 } )
$orderBy
クエリ修飾子はmongo
で非推奨になりました v3.2以降のシェルですが、とにかくここに含めることにしました。詳細については、MongoDBのドキュメントを参照してください。