Группа (К) в Мангуст? - PullRequest
19 голосов
/ 28 июля 2011

Я создал запрос, который мне нужен, в оболочке, но у меня возникают проблемы при записи его на Mongoose.

db.commentstreams.group({ key: { page_id: true }, reduce: function(obj,prev) { prev.num_comments += obj.num_comments }, initial: { num_comments: 0 } })

Я немного смущен синтаксисом Mongoose;возможно, кто-то мог бы пролить свет на этот.Большое спасибо.

Ответы [ 3 ]

14 голосов
/ 27 сентября 2011

Согласно этому сообщению :

Model.find({}, [fields], {'group': 'FIELD'}, function(err, logs) { 
        ... 
}); 

К сожалению, нам не хватает документации для этого.

13 голосов
/ 12 мая 2012

MapReduce должен быть правильным способом, но если вы не используете шард, и ваш запрос не даст более 10 тыс. Записей, это нормально.

Вы можете получить доступ к любым функциям node-mongodb через moongoose, поэтому это выглядит так:

var group = {
   key: {},
   cond: {item_id: item_id},
   reduce: function(doc, out) {
      out.count++;
      out.total += doc.value;
   },
   initial: {
       total: 0,
       count: 0
   },
   finalize: function(out) {
       out.avg = out.total / out.count;
   }
};

Item.collection.group(group.key, group.cond, group.initial, group.reduce, group.finalize, true, function(err, results) {
    console.log('group results %j', results);
});

node-mongodb-native source: https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/collection.js#L1165

MongoDB group doc: http://www.mongodb.org/display/DOCS/Aggregation#Aggregation-Group

0 голосов
/ 17 июля 2016

если вы пытаетесь использовать Mongoose для группировки, возможно, вам лучше взглянуть на это Запрос группы Mongoose в node.js / экспресс-маршрут

Кажется, группа не поддерживается Mongoose, а агрегат -.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...