как использовать агрегацию Mongodb внутри узла - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть «предметы» из коллекции MongoDb со следующими предметами:

    {
    "_id" : ObjectId("5b8fc348c26b60039e9d8f2c"),
    "item" : "tomate",
    "calories" : 15,
    "quantity" : 2,
    "__v" : 0
}
{
    "_id" : ObjectId("5b8fc56476cdff03d3cb3611"),
    "item" : "Lechuga",
    "calories" : 24,
    "quantity" : 1,
    "__v" : 0
}

Мне нужно вернуть результат добавления общего количества калорий от каждого элемента; Я могу использовать агрегацию из MongoDB, чтобы получить этот результат (15 + 24 = 39), но как я могу отразить этот результат на Node? Я попытался запустить функцию агрегирования из Node, но она не сработала, я предполагаю, что она не сработала, потому что это Node, а не Mongo. Я посмотрел вокруг, но я не могу найти какие-либо решения

Это мой код узла:

mongoose.connect(url);
app.use(metOvrr("_method"));
const itemSchema = new mongoose.Schema({
  item: String,
  calories: Number,
  quantity: Number
});

const Item = mongoose.model('Item', itemSchema);

/* GET home page. */
app.get('/', (req, res)=> {
  res.redirect('/item');
});
app.get('/item', (req, res)=> {
  Item.find({}, (err, allItems)=>{
    if (err) {
      console.log(err);
    } else {
      res.render('itemlist', {'itemlist': allItems, 'total': db.items.aggregate([
        {$match: {}},
        {$group: {_id: '', total: {$sum: '$calories'} }}
      ])});
    }
  });
});

Буду признателен за любую помощь, которую смогу получить.

...