是否可以解析MongoDB中的查询以获得更具体的结果?

时间:2013-07-06 20:03:13

标签: node.js mongodb database nosql

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

{“time”:“4:35”}

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

2 个答案:

答案 0 :(得分:1)

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

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

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

  

db.time.find({},{ “_编码”:0})
  {“mytime”:“4:35”}   {“mytime”:“1:35”}   {“mytime”:“6:35”}   {“mytime”:“8:35”}   {“mytime”:“10:35”}   {“mytime”:“10:10”}

     
    

db.time.find({mytime:{$ gt:“2:00”,$ lt:“8:00”}},{“_ id”:0})
    {“mytime”:“4:35”}     {“mytime”:“6:35”}

  

答案 1 :(得分:0)

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

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