Монах не реализует .group()
метод на своем собственном, но есть .col
сбруя доступны, из которого вы можете получить родной Collection объект из базового драйвера и использовать его методы.
Ваше использование для .group()
немного, поэтому я буду использовать мои данные пример:
{
"_id" : ObjectId("5479c4793815a1f417f537a0"),
"status" : "canceled",
"date" : ISODate("2014-11-29T00:00:00.000Z"),
"offset" : 30,
},
{
"_id" : ObjectId("5479c4793815a1f417d557a0"),
"status" : "done",
"date" : ISODate("2014-10-20T00:00:00.000Z"),
"offset" : 30,
},
{
"_id" : ObjectId("5479c4793815a1f417f117a0"),
"status" : "done",
"date" : ISODate("2014-12-29T00:00:00.000Z"),
"offset" : 30,
}
Тогда вы можете просто написать код в .group()
подобное заявление:
var db = require('monk')('localhost/test'),
sample = db.get('sample');
sample.col.group(
["status"],
{},
{ "count": 0 },
"function (obj,prev) { prev.count++; }",
function(err,docs) {
if (err) console.log(err);
console.log(docs);
}
);
Но что также показывает, что в 99% случаев вы, вероятно, действительно хотите использовать метод .aggregate()
:
var db = require('monk')('localhost/test'),
sample = db.get('sample');
sample.col.aggregate(
[
{ "$group": {
"_id": "$sample",
"count": { "$sum": 1 }
}}
],
function(err,docs) {
if (err) console.log(err);
console.log(docs);
}
);
Структура агрегации, как правило, намного более гибкая, чем .group()
, и запускает собственные операторы кода в отличие от интерпретируемого JavaScript, поэтому это довольно полезное обучение.
Не могли бы Вы предоставить более подробную информацию. Как то, что является переменной 'collection' и все? – Kelsadita