MongoDB - 不了解如何使用游标循环集合

时间:2012-06-05 20:27:31

标签: javascript mongodb mongoid

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

非常感谢!

谢谢!

3 个答案:

答案 0 :(得分:33)

快速而肮脏的方式是:

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

还有更多功能:

items.forEach(function(item) {
   /* do something */
});

答案 1 :(得分:1)

循环集合的另一种方法是使用toArray cursor的方法:



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

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

答案 2 :(得分: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);
});