MongoDB - 不明白如何使用光标遍历集合

MongoDB - dont understand how to loop through collections with a cursor

本文关键字:光标 遍历 集合 何使用 明白 MongoDB      更新时间:2023-09-26
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

非常感谢帮助!

谢谢!

快速而肮脏的方法是:

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

还有更实用的:

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

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

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

由于您没有显示堆栈,因此我认为您的问题是您要传递给 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);
});