2016-09-30 155 views
0

我在有日期的mongodb中有很多数据。通常这些日期在任何日期,但在10:00:00和22:00:00之间。MongoDB:按日期时间查询部分日期时间

因为我发现在超出上述范围的时候会出现一些奇怪的行为,所以我想要一个查询返回每个不在10:00:00和22:00:00之间的文档。有没有办法在MongoDB中做到这一点?

例如按时间部分查询日期?

+0

提示:'$ project'您的文档,并使用[日期操作符](https://docs.mongodb.com/v3.2/reference/operator/aggregation-date/)返回每个文档的时间。从那里,你可以在'$ match'阶段过滤你的文档。 – styvane

回答

1

查询是上午12点29分以后有时间的文档,我的解决办法是:

(event_start是isodatetime)

I)项目小时和分钟

{'$project': {'_id': 1, 
      'hour': {'$hour': '$event_start'}, 
      'minute': {'$minute': '$event_start'}}}, 

II)赛后说:`

{'$match': {'$or': [ 
        {'hour': {'$gt': 12}}, 
        {'$and': [{'hour': {'$eq': 12}}, 
           {'minute': {'$gte': 30}} 
           ]}]}} 

源 - >Link