데이터베이스에 다음과 같은 데이터가 있습니다.
{
"_id" : ObjectId("5ec4e40a7c89c96c7c3818f0"),
"lob" : "DIGITAL_STORE",
"paymentMode" : "NET_BANKING",
"pgStatus" : "PG_SUCCESS",
"createdAt" : ISODate("2020-05-20T08:02:18.566Z"),
"updatedAt" : ISODate("2020-07-22T18:57:29.915Z"),
"updatedBy" : "ONLINE_CHANNEL",
"_class" : "com.airtel.payments.pg.commons.persistence.PgTransactionDetails"
},
{
"_id" : ObjectId("5ec4e40a7c89c96c7c3818f0"),
"lob" : "DIGITAL_STORE",
"paymentMode" : "NET_BANKING",
"pgStatus" : "PG_FAILED",
"createdAt" : ISODate("2020-05-20T08:02:18.566Z"),
"updatedAt" : ISODate("2020-07-22T18:57:29.915Z"),
"updatedBy" : "ONLINE_CHANNEL",
"_class" : "com.airtel.payments.pg.commons.persistence.PgTransactionDetails"
}
LOB 및 지불 모드로 그룹화 된 하나의 문서에서 성공 및 실패 횟수를 가져올 수있는 mongodb에서 데이터를 가져와야합니다.
나는 이와 같은 것을 시도했지만 lob 및 지불 모드 분리가 오지 않습니다.
db.getCollection('transactionDetails').aggregate([
{$project: {
Success: {$cond: [{$eq: ["$pgStatus", "PG_SUCCESS" ]}, 1, 0]},
Failed: {$cond: [{$eq: ["$pgStatus", "PG_FAILED"]}, 1, 0]}
}},
{$group: {
_id: {Lob:"$lob",Mode:"$paymentMode"},
Success: {$sum: "$Success"},
Failed: {$sum: "$Failed"}
}}
]);
나는 이것을 별도로 할 수 있지만 성공과 실패 트랜잭션의 수를 모두 단일 문서로 가져올 수는 없습니다.
$ project를 사용했고 하나의 필드 만 프로젝션했으며 다른 필드는 다음 파이프 라인에 더 이상 사용할 수 없기 때문에
에 다른 필드를 추가 $project
하거나 $addFields
대신 사용할 수 있습니다 $project
.
또는에서 모든 작업을 시도 할 수 있습니다 $group
.
db.getCollection('transactionDetails').aggregate([
{
$group: {
_id: { Lob: "$lob", Mode: "$paymentMode" },
Success: {
$sum: { $cond: [{ $eq: ["$pgStatus", "PG_SUCCESS"] }, 1, 0] }
},
Failed: {
$sum: { $cond: [{ $eq: ["$pgStatus", "PG_FAILED"] }, 1, 0] }
}
}
}
])
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다