db.eval
を使用することをお勧めします データベース側でこれを行うことにした場合。
別の質問から抽出した回答:
これが直接可能だとは思いません。 sortdocumentationには、カスタム比較機能を提供する方法は確かに記載されていません。
クライアントで並べ替えを行うのがおそらく最善ですが、サーバーで並べ替えを行うことに本当に決心している場合は、
db.eval()
を使用できる可能性があります。 サーバー上でソートを実行するように手配します(クライアントがそれをサポートしている場合)。サーバー側の並べ替え:
db.eval(function() { return db.scratch.find().toArray().sort(function(doc1, doc2) { return doc1.a - doc2.a }) });
同等のクライアント側ソートとの比較:
db.scratch.find().toArray().sort(function(doc1, doc2) { return doc1.a - doc2.b });