2013-08-02 3 views
0

Я хочу знать, как я могу получить счет всех строк, которые я получаю из своей коллекции MongoDB.Count MongoDB collection row

var collection = db.collection(_collection).find(); 

Прямо сейчас я не знаю, о там somting или нет в нем, в случае необходимости, чтобы следовать по каким Мэни строки я выйти из моей коллекции.

Есть ли более эффективный способ получить мои «данные» из-за использования функции Stream?

var stream = collection.find().stream();    
stream.on("data", function(item) 
{ 
    console.log(item.zipcode); 
}); 

stream.on("end", function() 
{ 
}); 

, как я могу получить вид помощи, :)

+0

'db.collection(). Find(). Count()'? – Sammaye

+0

У меня есть попытка, но ширина из удачи ... Я думаю, что мабы я делаю somthing worng :) – ParisNakitaKejser

+0

Где вы это делаете? – Sammaye

ответ

3

Я не использовал драйвер Node.js на всех, но, глядя на documentation, оказывается, что Collection() имеет функцию подсчета на это:

// Assuming DB has an open connection... 
db.collection("my_collection", function(err, collection) { 
    collection.count(function(err, count)) { 
     // Assuming no errors, 'count' should have your answer 
    } 
}); 

Это вообще помогает?

Что касается второй части вашего вопроса, я не совсем уверен, что вы спрашиваете, но вот несколько способов получить ваши данные:

Использование функции toArray() дать вам массив все документы (see docs):

collection.find().toArray(function(err, docs) { 
    // 'docs' should contain an array of all your documents 
    // 'docs.length' will give you the length of the array (how many docs) 
}); 

Использование функции each() в цикле над результатами и выполнять заданную функцию для каждого из них (see docs):

collection.find().each(function(err, doc) { 
    // this function will be executed once per document 

    console.log(doc.zipcode) 
}); 

Я надеюсь, что это поможет вам.

+0

Это работает только в том случае, если он использует собственный драйвер node-mongodb. Если он использует обертку, такую ​​как Mongoose, ему нужно получить доступ к базовому драйверу, чтобы использовать 'toArray' и' each' – randunel

+0

Это правда. Я предположил, что он был основан на том факте, что он ссылается на функцию потока (которую имеет собственный драйвер) и отсутствие какой-либо дополнительной информации. –

+0

Большое спасибо, «find(). Каждая (...) функция его, что разрешила проблема с медью ^^ – ParisNakitaKejser