2012-06-05 26 views
10
advertisers = db.dbname.find('my query which returns things correctly'); 

我现在意识到它将光标返回到集合列表。MongoDB - 不理解如何通过游标循环收集

但我不知道如何遍历它们并获得每个集合。

我想尝试这样的事:

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

帮助非常感谢!

谢谢!

回答

31

的快速和肮脏的方法是:

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

还有更多的功能:

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

thanks..I已经试过了,但由于某种原因,我得到这样的错误:星期二06月05日16:31 :08语法错误:语法错误(shell):1 星期二6月6日16:31:08未捕获异常:错误hasNext:假 – Genadinik

+0

我没有hasNext()。 –

+0

@Jinging我试过了,但由于某种原因,它仍然无法工作。 – Genadinik

0

既然你不显示堆栈那么我想你的问题是要传递的参数到查找函数,这个参数必须是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); 
}); 
1

One mo再方式,通过收集循环使用指定者光标的方法:

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

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