一个用户可以添加多个产品,而多个用户可以请求该产品。对于每种产品,我都有一个对象数组,其中包含请求该产品的用户的用户ID。我试图获取所有请求的总和,例如:(为简单起见,组成了对象ID,我知道它们是不现实的)
在下面,我有2个产品,一个有一个请求,第二个有2个请求,因此该用户有2个产品和3个请求。我正在尝试获取3的值。
_id: ObjectId("12323443463")
userId: ObjectId("88888888")
title: "Product 1"
requests: Array
0: Object
_id: ObjectId("89766876")
userId: ObjectId("09795675")
_id: ObjectId("9878754")
userId: ObjectId("88888888")
title: "Product 2"
requests: Array
0: Object
_id: ObjectId("89766876")
userId: ObjectId("09795675")
1: Object
_id: ObjectId("66445547676")
userId: ObjectId("7765543434")
我尝试了这个:
Product.aggregate([
{ $match: { userId: req.user._id }},
{ $group: { _id: "$requests.userId", totals: { $sum: 1 } } }
])
如果我console.log它得到:
[ { _id: [ 5c375260a6f58308e510711a, 5c25cddc73d10c02a75b3d55 ],
totals: 1 },
{ _id: [ 5c375260a6f58308e510711a ], totals: 1 } ]
正确的是,它为我提供了请求该产品的用户的3个ID。但是,我真的只是希望查询得到3的值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句