使用聚合在每个文档mongodb中增加或减去一个字段
我正在尝试查询我的数据库,但我不知道如何执行此查询。。。我试图知道我在每个文档的每个月都有一个产品的库存 我有这些文件使用聚合在每个文档mongodb中增加或减去一个字段,mongodb,mongodb-query,Mongodb,Mongodb Query,我正在尝试查询我的数据库,但我不知道如何执行此查询。。。我试图知道我在每个文档的每个月都有一个产品的库存 我有这些文件 { _id: "6sdgsd5614sd12", type: 'purchase', date: '2020-04-11T20:33:14.021+00:00', products: [{ _id: "62360asadc2q622", price: 542, units:
{
_id: "6sdgsd5614sd12",
type: 'purchase',
date: '2020-04-11T20:33:14.021+00:00',
products: [{
_id: "62360asadc2q622",
price: 542,
units: 9
}]
},
{
_id: "34gf435345345f",
type: 'purchase',
date: '2020-04-12T50:51:14.691+00:00'.
products: [{
_id: "62360asadc2q622",
price: 542,
units: 5
}]
},
{
_id: "543g456g3344433",
type: 'sales'
date: '2020-04-13T20:12:14.011+00:00'
products: [{
_id: "62360asadc2q622",
price: 542,
units: 4
}]
},
现在我想在每个文档中添加一个字段,其中包含该特定文档中的库存,例如,
我的第一份文件是我买了9个单位,所以我的库存是9个,在第二份文件中我又买了5个单位,所以我的库存是14个,在最后一份文件中我卖出了4个,所以我的最终库存是10个。
这些文件按日期排序
我的预期结果是这样的输出
{
_id: "6sdgsd5614sd12",
type: 'purchase',
date: '2020-04-11T20:33:14.021+00:00',
products: [{
_id: "62360asadc2q622",
price: 542,
units: 9,
stock: 9
}]
},
{
_id: "34gf435345345f",
type: 'purchase',
date: '2020-04-12T50:51:14.691+00:00'.
products: [{
_id: "62360asadc2q622",
price: 542,
units: 5,
stock: 14
}]
},
{
_id: "543g456g3344433",
type: 'sales'
date: '2020-04-13T20:12:14.011+00:00'
products: [{
_id: "62360asadc2q622",
price: 542,
units: 4,
stock: 10
}]
},
我一直在尝试用$inc和$subtract进行聚合,但我不知道如何做,在匹配产品后,我使用$addFields,但运营商$inc我认为不在聚合中工作。。。有人知道我怎么做吗?救命啊。。。谢天谢地,问题是聚合不会在文档之间保留任何状态,因此当需要检查最后一份销售文档时,不会有状态变量告诉您手头有14份 您可以通过以下方式获得所需内容:
按日期排序,以便一切都按正确顺序排列$sort
products数组,因此每个文档只有一个产品$unwind
通过$group
将原始文档添加到数组中product\u id
使用$addFields
遍历数组并为每个元素提供库存总量$reduce
该数组$unwind
按原始$group
和\u id
将产品记录推回数组李>$push