2012-06-05 37 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); 
 
}