【问题标题】:Querying within a time range in mongo在mongo中查询一个时间范围内
【发布时间】:2012-06-20 15:43:16
【问题描述】:

我有一个 mongo 数据库,我将日期和时间存储在单独的字段中(我无法更改此设置)。谷歌搜索,我发现人们通过将字段分成 2 部分来查询日期和时间的示例,1 表示日期,1 表示时间,例如:

{"dateField": {"d": "06/18/2012" "t": "12:00:00 AM"}}
{"timeField": {"d": "06/18/2012" "t": "12:07:10 PM"}}

我见过人们(并且自己能够)查询日期部分:

db.collection.find({"dateField.d": {"$gte": "06/18/2012"}})

我的问题是随着时间的推移尝试相同的事情时我无法获得准确的结果:

db.collection.find({"timeField.t": {"$gte": "12:00:00 PM"}})

我应该以特定的方式格式化我的时间数据来查询它吗?或者有没有更好的方法来存储时间数据,以便我可以只查询时间(而不依赖于日期)?

【问题讨论】:

    标签: python mongodb pymongo


    【解决方案1】:

    您需要以真实的日期格式或数字形式存储数据。当您进行这些搜索时,比较使用的是 lexicography 顺序,这不是您想要的。如果您确实想使用字符串,您应该使用ISO formats 之一。

    【讨论】:

    • 这听起来是一种糟糕的方式 [将日期存储为字符串]。
    • 谢谢,转换为 ISO 格式有效。 @monksy虽然我更喜欢将日期和时间存储为对象,但问题是日期信息和时间信息保存在单独的字段中,我需要的只是时间和时间。不幸的是,我能找到的每个对象表示都结合了时间和日期(随着时间的推移和数据的变化,这可能是正确的日期,也可能不是正确的日期)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多