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
非常感谢!
谢谢!
答案 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;
答案 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);
});