2016-11-01 9 views
0

ご存知のように、{$in: {_id: []}}は注文しません。

私はこの目的のためにAsync.jsを使いたいと思います。私はAsync.jsでこれを実行するにはどうすればよい例えば

const ids = [3,1,2]; // Initial ids, I get it from aggregation 
const documents = [{_id:1}, {_id:2}, {_id: 3}]; // That's I get from MongoDB 
const result = [{_id:3}, {_id: 1}, {_id: 2}] // That's I need 

?私はとmongoose-fillを使用しています。aggregation

+0

すべての結果を収集した後、JS sortByを使用して好きなパラメータを選択するとどうなりますか? –

+0

あなたは何を意味したのか正確には分かりません。 私は思うように、私は2つのループを書く必要があります: var result = []; (var i = 0; i Alexander

+0

私の答えをチェックしてください。シンプルに常に良い。多分私はあなたの質問を理解できないでしょう。しかし、私はあなたがすべてのクエリの結果を並べ替える必要がある参照してください。これはJSでうまくいくことができます。しかし、各IDを1つずつ照会して配列をソートする場合は、私は1つのクエリを使用することをお勧めします。これは多くのパフォーマンスの向上です。 –

答えて

1

ここでは非同期は必要ありません。自然なJavaScriptの並べ替えでこれを手助けします。

は、あなたが今、あなたは単純なソートを実行することができ、この

const documents = [{_id:1}, {_id:2}, {_id: 3}];

のような結果を受信したときにMongoDBはちょうどこの

{_id : {$in: [1,2,3]}} ;

のようなクエリを使用して照会するに

let result = documents.sort((a, b) => a._id < b._id);

console.log(result);

出力はIDの降順でソートされます。

[{_id:3}, {_id: 2}, {_id: 1}];

は、この情報がお役に立てば幸いです。

+0

いいえ、いいえ、いいえ。私はIDでドキュメントをマップしたいと思います。投稿が正しくない例私は解決策[this]を見つけました(http://stackoverflow.com/a/32385762/7054633) – Alexander

関連する問題