12
advertisers = db.dbname.find( 'my query which returns things correctly' );

コレクションのリストにカーソルが戻ることに気づきました。

しかし、それらをループして各コレクションを取得する方法がわかりません。

私はこのようなことを試してみたい:

advertisers.each(function(err, advertiser) {
    console.log(advertiser);
});

しかし、それは機能しません。しかし、オンラインで検索しても、単純なJavaScriptで実際に機能させる方法はわかりませんでした。

それから私はこのコードを持っています:

var item;

if ( advertisers != null )
{
   while(advertisers.hasNext()) 
   { 
      item = advertisers.next();
   }
}

そしてそれはこのエラーを与えます:SyntaxError: syntax error (shell):1

よろしくお願いします!

ありがとう!

4

3 に答える 3

34

迅速で汚い方法は次のとおりです。

var item;
var items = db.test.find();
while(items.hasNext()) {
   item = items.next();
   /* Do something with item */
}

より機能的なものもあります:

items.forEach(function(item) {
   /* do something */
});
于 2012-06-05T20:29:42.370 に答える
1

コレクションをループするもう1つの方法は、toArrayカーソルのメソッドを使用することです。

var results = db.getCollection('posts').find({}).toArray();

for(var i = 0; i <= results.length -1; i++)
{
    print("Author is:" + results[i].Author);
}

于 2017-06-26T08:02:40.540 に答える
0

スタックを表示していないので、問題はfind関数に渡すパラメーターであると想定します。したがって、このパラメーターはJavaScriptオブジェクトである必要があります。

var query = {
    key: 'my query which returns things correctly'
}

advertisers = db.dbname.find(query);
advertisers.each (function(err, doc){

    //.... error code not included.....
    console.log(doc);
});
于 2015-01-24T18:27:44.047 に答える