3

コレクションを検索し、返された結果セットをスキャンして、その変換を返したいとします。私は次のコードを試しました:

db.my_collection.find({timestamp : {$gt: 1343032491799}}, {_id:0,sid:1}).limit(20).forEach(function(element) { print(element.sid); })

わかりました、うまくいきました。sid質問に対して: 結果 ( s) を出力するだけでなく、配列に蓄積するにはどうすればよいですか?

更新:もちろん、ルビースタイルのワンライナーが推奨されます(必須ではありません)

4

3 に答える 3

4

toArrayの代わりにカーソルで呼び出すforEach:

var a = db.my_collection.find(
    {timestamp : {$gt: 1343032491799}}, {_id:0,sid:1}).limit(20)
    .toArray().map(function(o){return o.sid;})

アップデート

カーソルがそのメソッドを直接提供するため、をスキップしてtoArrayすぐに移動できるようです。map

var a = db.my_collection.find(
    {timestamp : {$gt: 1343032491799}}, {_id:0,sid:1}).limit(20)
    .map(function(o){return o.sid;})
于 2012-11-20T13:19:59.113 に答える
0

親スコープで変数を使用できます。

var myArr = []; //the results will go there
db.my_collection.find({timestamp : {$gt: 1343032491799}}, {_id:0,sid:1}).limit(20).forEach(function(element) {
  myArr.push(element.sid); //this function has access to myArr
});
于 2012-11-20T13:18:54.950 に答える
0

ID を配列にプッシュします。

var myArray = [];
b.my_collection.find({timestamp : {$gt: 1343032491799}}, {_id:0,sid:1 })
    .limit(20)
    .forEach(function(element) {
        myArray.push(element.sid);
    })​
于 2012-11-20T13:20:09.717 に答える