无法执行mongdb聚合函数

问题描述 投票:0回答:1

我正在尝试使用

sum
函数在我的
mongo
文档中
aggregate
某些字段值。但我得到的总和值为 0。

下面是我的示例 mongo 文档:

 {
    _id: ObjectId("64d9e5e7f7b6237202be444b"),
    userName: '[email protected]',
    remoteAccessToken: 'Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbkBtYWlsLmNvbSIsImlhdCI6MTY5MTYxMTczNCwiZXhwIjoxNjkxNjEyMzM0fQ.PkIyyetG739jTQPzmypsbF8oTCrBzYLe5bWbKj38vjA',
    requestPayload: { amount: 90, msisdn: '9816762561', transactionId: 41657 },
    response: {
      code: 200,
      data: {
        message: 'Payment success'
      },
      error: null
    },
    createdOn: ISODate("2023-08-14T08:29:27.572Z"),
    _class: 'com.atlas.xorx.domain.PaymentLogDetail'
  }

我想要实现的目标

我想要所有成功付款的

requestPayload.amount
总和,即某些
response.code:200
userName

我正在尝试以下聚合查询:

db.paymentLogDetail.aggregate([{"$match":{"$and" : [{"userName" : "[email protected]"},{"response.code":200 }]}},{"$group":{"_id":null,"total":{"$sum":"requestPayload.amount"}}}]);

我收到以下回复:

[ { _id: null, total: 0 } ]

我必须在现有查询中进行哪些更改才能获得任何用户名的成功付款金额的有效总和。

mongodb aggregation-framework
1个回答
0
投票

响应如期而至。这只是一个字符问题。我们想要

sum
(或任何其他
aggregate
函数)的值必须附加
$
。所以正确的查询是:

 db.paymentLogDetail.aggregate([{"$match":{"$and" : [{"userName" : "[email protected]"},{"response.code":200 }]}},{"$group":{"_id":null,"total":{"$sum":"$requestPayload.amount"}}}]);

"$requestPayload.amount"
而不是
"requestPayload.amount"

© www.soinside.com 2019 - 2024. All rights reserved.