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

循环遍历集合的另一种方法是使用 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 回答