如何在Node中使用Mongodb聚合

时间:2018-09-08 22:18:31

标签: node.js mongodb aggregation

我有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'} }}
      ])});
    }
  });
});

我将不胜感激。

0 个答案:

没有答案