2017-04-20 403 views
2

我在string format 'yyyyMMdd'中获得date parameter如何在mongodb中过滤特定日期格式的查询?

我有一个集合在mongodb中有一个属性CallDate ISODate(),我需要写下一个查询过滤日期参数。

SQL服务器,我们只是使用查询

select * from xyz x with (nolock) 
where CONVERT(VARCHAR(23), Cast(x.CallDate as datetime), 112) = @pDateParameter 

我怎么能达到同样过滤器MongoDB的

db.getCollection("_xyz").find({CallDate : ?}) //How to adjust that filter here 

回答

1

你可以试试下面聚集的3.4版本。

使用$addFields$match的日期参数添加字符串格式化的日期的属性跟后来,如果你喜欢,你可以通过使用$project与排斥下降字符串日期列。

db.collection.aggregate([ 
     { $addFields: {yearMonthDay: { $dateToString: { format: "%Y%m%d", date: "$CallDate" } } } }, 
     { $match: {"yearMonthDay":date parameter}}, 
     { $project:{"yearMonthDay":0}} 
    ]) 
+0

能否详细说明$ project的用法吗? –

+1

带有字段排除的项目用于删除我们作为聚合管道的一部分添加的额外日期字符串字段。这里有更多信息。 https://docs.mongodb.com/manual/reference/operator/aggregation/project/#exclude-fields – Veeram