また、これを行う理由がわかりません(ソートしようとしているフィールドのインデックスは、このソートを高速化するのに役立ちます)、ここに問題の解決策があります:
このようにしてテストコレクションを取得します
{ "_id" : ObjectId("5273f6987c6c502364ddfe94"), "n" : 5 }
{ "_id" : ObjectId("5273f6e57c6c502364ddfe95"), "n" : 14}
{ "_id" : ObjectId("5273f6ee7c6c502364ddfe96"), "n" : -5}
次に、次のコマンドでソートされたコレクションが作成されます
db.test.find().sort({n : 1}).forEach(function(e){
db.testSorted.insert(e);
})
これで達成できるのとまったく同じ方法です(これはより高速に実行されると思いますが、テストは行っていません):
db.testSorted.insert(db.test.find().sort({n : 1}).toArray());
そして、この回答を完全にするために、これはやり過ぎであることも理解しています。集計フレームワークオプション $outを使用してこれを行うことができます。
強調するだけです:これにより、より大きな問題を解決できます。以前のコレクションの何らかの変更/サブセットを別のコレクションに保存します。