【发布时间】:2021-07-26 03:43:58
【问题描述】:
我正在开发一个电子商务网络应用程序,我使用 MEAN 堆栈。
我有一个订单集合,每个订单都有一个payment 字段,其中包含用于支付数据的子文档(affiliate marketer、sellersPayment、website、referral)
我的问题是关于 sellersPayment 字段,我有一个类似
sellersPayment: [
{
amount: 50,
isPaid: false,
seller: ObjectId('seller 1 id'),
},
{
amount: 80,
isPaid: true,
seller: ObjectId('seller 2 id'),
},
]
问题是我想查询在该数组 ant 内的 seller 字段上有特定卖家的订单,然后对 amount 字段求和
这是我的方法:
await Order.aggregate([
{
$match: {
"payment.sellersPayment": {
$elemMatch: {
seller: ObjectId(user._id),
isPaid: false,
},
},
} },
{
$group: {
_id: null,
confirmedBalance: { $sum: "$payment.sellersPayment.$.amount" },
},
},
{
$project: {
confirmedBalance: 1,
},
},
]);
我收到此错误
" FieldPath 字段名称不能以 '$' 开头" 有什么解决办法吗?
【问题讨论】:
-
你能提供一个输入和输出的例子吗?此外,您不能使用两个位置运算符
$。尝试在"$payment.sellersPayment.$.amount"中删除其中一个@ -
非常感谢,我将最后一条评论标记为已接受的答案。
标签: mongodb express mongoose aggregation-framework