最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何从猫鼬中独立的两个子文档数组中获取和

IT培训 admin 11浏览 0评论

如何从猫鼬中独立的两个子文档数组中获取和

我有这个架构

    var salesExpenseSchema = new Schema({   

        sales: [{amount : Schema.Types.Decimal128}],

        expenses: [{amount : Schema.Types.Decimal128}]

});

数据库记录示例如下:>

{
    _id:'5dbac5dfa1488240cbc4f838',
    sales:[{amount:23000},{amount:45000}],
    expenses: [{amount:5000},{amount:8500}]
}

现在,我想获得销售和费用的总和。

我已将Aggregate与$ unwind一起用于以下销售和支出:

SalesExpense.aggregate([
              {$unwind: "$sales"},
              {$unwind: "$expenses"},
              {$group:{
                    _id:'$_id',
                    sales:{$sum: "$sales.sellPrices"},
                    expenses:{$sum: "$expenses.amount"},
                  }
              },

但是问题是... 如果一个数组文档中有数据,而另一个数组中没有数据,则它给出0,即无法获得真实的总和。

就是说,如果有销售但没有费用,则它们的总和变为0,反之亦然。

我想获得销售和费用的总和,而不管其中之一没有数据。我该如何实现?

我有这个架构var salesExpenseSchema = new Schema({sales:[{amount:Schema.Types.Decimal128}],开支:[{amount:Schema.Types.Decimal128}]})); ...

回答如下:

您可以通过简单的方法在项目阶段执行此操作:

如何从猫鼬中独立的两个子文档数组中获取和

我有这个架构

    var salesExpenseSchema = new Schema({   

        sales: [{amount : Schema.Types.Decimal128}],

        expenses: [{amount : Schema.Types.Decimal128}]

});

数据库记录示例如下:>

{
    _id:'5dbac5dfa1488240cbc4f838',
    sales:[{amount:23000},{amount:45000}],
    expenses: [{amount:5000},{amount:8500}]
}

现在,我想获得销售和费用的总和。

我已将Aggregate与$ unwind一起用于以下销售和支出:

SalesExpense.aggregate([
              {$unwind: "$sales"},
              {$unwind: "$expenses"},
              {$group:{
                    _id:'$_id',
                    sales:{$sum: "$sales.sellPrices"},
                    expenses:{$sum: "$expenses.amount"},
                  }
              },

但是问题是... 如果一个数组文档中有数据,而另一个数组中没有数据,则它给出0,即无法获得真实的总和。

就是说,如果有销售但没有费用,则它们的总和变为0,反之亦然。

我想获得销售和费用的总和,而不管其中之一没有数据。我该如何实现?

我有这个架构var salesExpenseSchema = new Schema({sales:[{amount:Schema.Types.Decimal128}],开支:[{amount:Schema.Types.Decimal128}]})); ...

回答如下:

您可以通过简单的方法在项目阶段执行此操作:

发布评论

评论列表 (0)

  1. 暂无评论