我正在使用Mongodb从集合中获取一些匹配的记录。我有条件让所有拥有多个记录且总和大于2000的用户。此代码工作正常。但是我必须在这个匹配条件下应用日期范围。
db.CX_REMITTANCE.aggregate( [
{ "$group": { "_id": { "REMT_NAME": "$REMT_NAME" },
"TRANS_REFNO": { "$push": "$TRANS_REFNO" },
"SENDER_NAME": { "$push": "$REMT_NAME" },
"REC_NAME": { "$push": "$BENF_NAME" },
"count": { "$sum": 1 },//Count
"TOTAL": { "$sum": "$LCYAMT" }//Sum
}},
{ "$match": { "count": { "$gt": 1 }, TOTAL: { "$gt": 2000 } }}
])
日期范围适用于2014年2月20日至2014年3月30日之间的transdate
{"TRANSDATE" :{
"$gte": ISODate("2014-02-200:00:00.000Z"),
"$lt": ISODate("2014-03-300:00:00.000Z")
}}
如果我在$ match上应用此条件我没有得到任何结果。即使上述结果在此日期范围内有记录。
如何才能添加此条件。
答案 0 :(得分:2)
听起来很像你的$match在错误的地方:
db.CX_REMITTANCE.aggregate( [
{" $match": {
"TRANSDATE" :{
"$gte": ISODate("2014-02-200:00:00.000Z"),
"$lt": ISODate("2014-03-300:00:00.000Z")
}
}},
{ "$group": { "_id": { "REMT_NAME": "$REMT_NAME" },
"TRANS_REFNO": { "$push": "$TRANS_REFNO" },
"SENDER_NAME": { "$push": "$REMT_NAME" },
"REC_NAME": { "$push": "$BENF_NAME" },
"count": { "$sum": 1 },//Count
"TOTAL": { "$sum": "$LCYAMT" }//Sum
}},
{ "$match": { "count": { "$gt": 1 }, "TOTAL": { "$gt": 2000 } }}
])