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

Zdaję sobie sprawę, że zwraca kursor do listy kolekcji.MongoDB - nie rozumiem, jak przeglądać kolekcje za pomocą kursora

Ale nie jestem pewien, jak przechodzić między nimi i uzyskać każdą kolekcję.

Chcę spróbować czegoś takiego:

advertisers.each(function(err, advertiser) { 
    console.log(advertiser); 
}); 

Ale to nie działa. Ale nie widziałem od wyszukiwania w Internecie, jak sprawić, by faktycznie działał z prostym JavaScript.

Wtedy mam ten kod:

var item; 

if (advertisers != null) 
{ 
    while(advertisers.hasNext()) 
    { 
     item = advertisers.next(); 
    } 
} 

i daje ten błąd: SyntaxError: syntax error (shell):1

Pomoc znacznie ceniona!

Dzięki!

Odpowiedz

31

Szybki i brudny sposobem jest:

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

Istnieje również bardziej funkcjonalny:

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

thanks..I próbował, ale z jakiegoś powodu został otrzymuję błąd tak: Tue Jun 5 16:31 : 08 SyntaxError: błąd składni (shell): 1 Wt. 5 maja 16:31:08 brak przechyłu wyjątku: error hasNext: false – Genadinik

+0

Nie miałem() na hasNext. –

+0

@ Wciąż próbowałem, ale nadal nie działa z jakiegoś powodu. – Genadinik

0

Ponieważ nie pokazując stos potem zakładamy, że problemem jest to parametr jesteś przejazdem do funkcji find, ten parametr musi być obiektem JavaScript, dlatego:

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

Jeden mo re sposób pętli kolekcjach wykorzystuje metodę ToArray kursora:

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

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

Powiązane problemy