我似乎找不到解决这个问题的办法.我就是不知道怎么了.

我已经试过Mongo subtract in group aggregation次了,但没有希望.邮报也没有进一步解释.

这是我的代码:

 var aggregateOptions;
  aggregateOptions = [{
    $match: {

    }
  },{
    $group: {
      _id: "$customerID",
      totalAmount: { $sum: "$amount" },
      totalpaidAmount: { $sum: "$paidAmount" },
      totalAmountDue: { $subtract: ["$totalAmount", "totalpaidAmount"] }
    }
  }];

  Sale.sales.get(Sale.Schema, aggregateOptions, (err, saleRecord) => {
    if (err) throw err;
    console.log(saleRecord);

    res.json({
      pageTitle: "Customer List",
      currentUser: req.user,
      saleRecord: saleRecord,
    });
  });

它会提示MongoError:$subtract累加器在每次查询时都是一元运算符.

推荐答案

将查询部分更改为以下内容:

aggregateOptions = [
  {
     $match: {

     }
  },
  {
     $group: {
       _id: "$customerID",
       totalAmount: { $sum: "$amount" },
       totalpaidAmount: { $sum: "$paidAmount" }
     }
  },
  {
     $addFields:{
       totalAmountDue: { $subtract: ["$totalAmount", "$totalpaidAmount"] }
     }
  }
];

Mongodb相关问答推荐

在一个视图中连接两个集合MongoDB;展开有什么作用?

无法在Ubuntu 22.04上安装MongoDB 7.0

MongoDB聚合$group阶段$top与$first在大型数据集上的效率

Mongo聚合的具体格式

从 kubectl exec 获取返回值到 powershell 脚本

MongoDB 查询以包含多个字段的最常见值的计数

以聚合顺序使用 $$ROOT

在 MongoDB 中打开连接的 SocketTimeout

如何在 Mongoose 中定义一个通用的嵌套对象

在一个变量上运行的 Node JS 中使用正则表达式的 Mongo 查询

将 MongoDB 地理空间索引与 3d 数据结合使用

在 Mongoose 中清理用户输入

$elemMatch 的 MongoDB 索引

如何在mongoose中加入两个集合

如何使用 MongoDB Compass 对数据进行排序

NumberLong和简单整数之间的MongoDB区别?

Mongoose.pre('save') 不会触发

Mongo:匹配聚合查询中的日期似乎被忽略了

Mongodb同时在多个字段上聚合(计数)

开发人员必须采取哪些mental steps才能开始从 SQL 迁移到 NOSQL(CouchDB、Fathom DB、MongoDB 等)?