【问题标题】:Sum an specific field from all elements mongoose对所有元素 mongoose 的特定字段求和
【发布时间】:2019-08-18 04:25:07
【问题描述】:

我在 mongoose 中有一个集合,用于存储每个订单行,其中包含价格、产品名称、数量和总价,价格乘以数量, ,我想要实现的是在 ejs 中插入订单的总金额以及每个元素或行的总价格的总和,基本上将所有元素的总字段相加并插入 ejs。

我查看了 mongoose 和 mongodb 文档,发现了 $sum 元素,但它没有回答我的问题。

 WE CAN SEE THE ELEMENT.

{ _id: 5d58512fe1ec313138b426d5,
  amount: 12,
  name: 'Bisagras de 3/8',
  price: 2.15,
  total: 25.799999999999997 }

 BELOW IS THE GET REQUEST IN NODE JS

 app.get("/order", function(req, res) {

    Order.find({}, function(err, data) {
       res.render("order", {ordenItem: data});  
    });
 });

AND THIS IS THE EJS PAGE

<% ordenItem.forEach(function(item){ %>

    <form action="/delete"  method="post" class="order">
        <div class="item">
            <input id="checkbox" type="checkbox" name="checkbox" value=" 
            <%= item._id %>" onChange="this.form.submit()">
            <h3><%=   item.amount  %> <%= item.name %> <%=  item.price %> 
            </h3>
        </div>

     <h3 class="price"><%= item.total++  %></h3>
   </form>

【问题讨论】:

  • 当您说“订单总额加上总价”时,您的意思是“订单总额”吗?另外,您是否只需要计算 totalAmount 或一些要与之一起检索的数据?请在下面查看我的答案!
  • @srinivasy 好吧,我想做的是把元素中的所有总数加起来,这样他们就可以给出一个总数。
  • 你试过下面的查询吗?
  • 是的,我试过了。
  • : 元素只是订单行?你需要改变吗??

标签: javascript html node.js mongodb express


【解决方案1】:

您实际上可以这样做,以获取订单的总金额,这确实是所有行的总和:

Order.aggregate({
    $group: {
        _id: '',
        totalAmount: { $sum: '$total' }
    }
 }, {
    $project: {
        _id: 0
    }
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    相关资源
    最近更新 更多