0

我想在我的 mongoDb 中获得大于 2:00 且小于 8:00 的时间。但是,我的数据如下所示:

{“时间”:“4:35”}

冒号阻止我进行诸如“db.collection.find({time:{$gt:2,$lt:8}})”之类的查询有什么方法可以查询吗?(也许在不改变内部数据的情况下将 4:35 解析为 435)

4

2 回答 2

1

如果你只是想搜索 2 到 8 之间的时间,那么你可以试试这个:

db.collection.find( { time: { $gt: "2:00", $lt: "8:00" } } )

这就是我所做的测试。我在集合中插入了一些数据,这里是列表:

db.time.find({},{"_id":0})
{ "mytime" : "4:35" }
{ "mytime" : "1:35" }
{ "mytime" : "6:35" }
{“我的时间”:“8:35”}
{“我的时间”:“10:35”}
{“我的时间”:“10:10”}

db.time.find( { mytime: { $gt: "2:00", $lt: "8:00" } }, {"_id":0} )
{ "mytime" : "4:35" }
{ “我的时间”:“6:35”}

于 2013-07-06T22:05:35.873 回答
0

将时间存储为字符串是一个坏主意。不幸的是,MongoDB 没有专门的 time-only 数据类型,但有两种选择不如使用字符串那么糟糕:

  1. 使用 BSON 日期。当存储年、月和日会适得其反时,将所有这些设置为相同的值(纪元的开始,1970 年 1 月 1 日,将是一个选项)。
  2. 使用一个整数,并让它表示自午夜以来的分钟数或秒数。在应用层进行转换。
于 2013-07-07T12:58:17.953 回答