我需要将我的(mongo)数据库中存储的所有信息都存储在按日期过滤的集合中。
问题是我在BD中存储了一个时间戳,我需要获取一天的所有信息。
例如,如果我选择2014-01-08,我必须在这一天完成所有治疗
你能帮我解决mongo请求吗?
感谢您提前
答案 0 :(得分:1)
使用带有基于"范围的查询"的日期范围进行查询,这是对$gte
和$lt
运算符的简单处理:
假设你的意思是" YYYY-MM-DD"如同"年" "一个月" "天":
db.collection.find({
"dateField": {
"$gte": new Date("2014-08-01"),
"$lt": new Date("2014-08-02")
});
因此,基本上选择属于该日期范围的所有项目仅发生在" 2014-08-01"只要。所以范围是所有属于范围的值。
如果您的时间戳实际上是一个数字(自纪元以来的毫秒数),那么您只需从您创建的日期对象中提取这些值并在查询中发送这些值:
db.collection.find({
"dateField": {
"$gte": new Date("2014-08-01").valueOf(),
"$lt": new Date("2014-08-02").valueOf()
});
同样的原则适用于任何语言,因为受支持的DateTime对象将有一个方法来执行此操作。
如果您这样做,那么您可能会重新考虑您的方法。 MongoDB使用BSON Date类型,除了"类型"标识符,实际上在内部存储时间戳号。所以BSON日期基本上没有开销,它们会自动用所有驱动程序扩展到DateTime对象,并得到其他内部运营商的支持。