2012-06-18 144 views
2

我有一个mongo数据库,我在单独的字段中存储日期和时间(我没有能力更改此设置)。谷歌搜索的时候,我发现人们打破领域分成2份,1日和1时,如查询的日期和时间的例子:在mongo的时间范围内查询

{"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"}}) 

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

回答

2

您需要以真实日期格式或数字形式存储数据。当你在做这些搜索时,比较使用的是lexicography,这不是你想要的。如果你确实想使用字符串,你应该使用其中一个ISO formats它的工作。

+0

这听起来像是一种糟糕的方式[将日期存储为字符串]。 – monksy

+0

谢谢,转换到ISO格式工作。 @monksy虽然我更喜欢将日期和时间作为对象存储,但问题是,将日期信息和时间信息保存在单独的字段中,我需要的只是时间和时间。不幸的是,我可以找到的每个对象表示都与日期结合在一起(随着时间的推移和数据发生变化,日期可能会或可能不会保持正确)。 –