node.js - 查询 MongoDB 只在特定时间搜索

标签 node.js mongodb

<分区>

我有一个问题,我想按一天中的特定时间进行搜索,

让我们开始吧:

我的数据模式是这样的:

{
 "symbol": "Orange",
 "timestamp": ISODate("2016-05-01T20:00:00.000Z"),
 "price": 10
}

我有很多条目,价格的值每分钟都在变化。

如果我想搜索,比方说,一天中的所有时间是:9 或 15,那么结果必须返回所有条目 9 到 9:59 和 15 到 15:59

我尝试做类似的事情:

 { $match: { timestamp: { $hour: { $in: [array_hours] } } }

但显然,不工作。

有什么想法吗?

最佳答案

我认为您可以使用 $hour, $day ... 来分解聚合中的日期。 例如:

我的数据:

db.orders.find()
{ "_id" : ObjectId("5760bf21b05d6825e05fa23d"), "item" : "test1", 
          "create_at" : ISODate("2016-04-30T11:00:00Z") }
{ "_id" : ObjectId("5760bf30b05d6825e05fa23e"), "item" : "test2", 
          "create_at" : ISODate("2016-04-30T12:00:00Z") }
{ "_id" : ObjectId("5760bf37b05d6825e05fa23f"), "item" : "test3",  
          "create_at" : ISODate("2016-04-30T13:00:00Z") }

我的查询:

db.orders.aggregate([{$project:{hour:{$hour:"$create_at"}}}, 
                 {$match:{hour:{"$in":[11,12]}}}])
{ "_id" : ObjectId("5760bf21b05d6825e05fa23d"), "hour" : 11 }
{ "_id" : ObjectId("5760bf30b05d6825e05fa23e"), "hour" : 12 }

Here is the doc

关于node.js - 查询 MongoDB 只在特定时间搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37823950/

相关文章:

node.js - Nodejs Redis 和 Waterfall 没有将值传递给下一个函数

javascript - 将 JSON 中的键小写 - Node JS

ruby-on-rails-3 - Mongoid 与设计的关系

node.js - 带有可能为空参数的 find() 语句

node.js - NPM run build 超过 100% cpu

node.js - socketio 和 redisstore 扩展效率

javascript - 在不修改的情况下扩展对象(功能扩展)

python - 导入 Eve,但运行 run.py 时,显示没有名为 eve 的模块

javascript - MongoDB 数组在数据库中变成了字符串

mysql - 实现 async/await node.js 和 mysql