Mongodb - 在聚合方法中添加日期范围条件

时间:2014-03-08 12:38:15

标签: mongodb aggregation-framework

我正在使用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上应用此条件我没有得到任何结果。即使上述结果在此日期范围内有记录。

如何才能添加此条件。

1 个答案:

答案 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 } }}
])