Mongodb在日期

时间:2015-10-27 20:23:10

标签: node.js mongodb mongodb-query aggregation-framework

我正在运行汇总查询,经过一些预测后,我最终得到的文档看起来像是

{ _id: 561bed08f8f068cd237a3dc1,
updateDate: Mon Oct 12 2015 11:25:28 GMT-0600 (MDT),
manager: 561bdd37f8f068cd237a3da2,
viewDate: Mon Oct 26 2015 09:02:57 GMT-0600 (MDT) }

请注意,这些日期是控制台格式的输出,当使用mongohub进行检查时,日期看起来像new Date(<timestamp>)

我想匹配updateDate大于viewDate的文档,所以我有这样的匹配:

$match: {
    updateDate: { "$gt": new Date("$viewDate") }
}

但是,它返回上面的文档,updateDate在12日,viewDate在26日。

我尝试了一些变体,例如有new Date()和没有<sessionState customProvider="Foo" mode="Custom" timeout="90"> <providers> <add name="FooProvider" type="Redis"/> </providers> </sessionState>

1 个答案:

答案 0 :(得分:1)

您无法在此处使用$match运算符。您需要使用$redact运算符。

db.collection.aggregate([
    { "$redact": { 
        "$cond": [ 
           { "$gt": ["$updateDate", "$viewDate"] }, 
           "$$KEEP", 
           "$$PRUNE"
        ]
    }}
])