当前位置:  开发笔记 > 编程语言 > 正文

MongoDB:按日期查询

如何解决《MongoDB:按日期查询》经验,为你挑选了1个好方法。

在MongoDB数据库中,我有一组项目,每个项目都存储其创建日期.我需要按日期查询此集合.我试过了:

db.items.findOne({date:{new Date(1285947037*1000)}})

但它没有返回任何东西.我使用PHP获得了时间戳($date->sec其中$dateMongoDate数据库中的对象).那么这样做的正确方法是什么?谢谢.



1> Niels van de..:

Date构造预计时间戳毫秒.该1285947037时间戳是,这就是为什么你乘以1000吧.

我的猜测是文档中的实际时间戳包含毫秒,例如1285947037461(注意最后的461).你将秒数乘以1000,结果是1285947037000.如您所见,这些时间戳不相等:

1285947037461 // actual timestamp in MongoDB
1285947037000 // value you calculated

问题在于MongoDate类:它会丢失毫秒精度,正如您可以在文档中看到的那样.这是引用:

[...]这意味着当文档发送到数据库或从数据库发送时,任何超过毫秒的精度都将丢失.

要使用时间戳(以秒为单位)查找要查找的文档,您需要以下内容:

db.foo.findOne(function () {
  // round the stored date to seconds and compare to timestamp
  return parseInt(this.date / 1000) === 1285947037
})

您可以使用在控制台中获取确切的时间戳(以毫秒为单位)myDateObject.getTime().

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有