从的ObjectId执行日期范围查询我有一个集合,看起来像这样:的MongoDB:在蒙戈外壳
{
_id: ObjectId("50a68673476427844b000001"),
other fields
}
我想做一个范围查询两个日期之间找到记录。我知道,我可以从在的ObjectId蒙戈外壳VAR日期这样做:
var aDate = ObjectId().getTimestamp()
但没有办法(据我可以在瞬间计算出)创建的ObjectId由刚时间戳部分 - 我认为我的理想的解决方案是不起作用的蒙戈外壳代码如下:
var minDate = ObjectId(new Date("2012-11-10"));
var maxDate = ObjectId(new Date("2012-11-17"));
使用带的minDate和MAXDATE的范围值查找。
有没有办法在壳里做这个 - 我不感兴趣,一些司机的产品。
前8个字节mongoid所提供的解决方案是十六进制的时间戳,所以你可以创建一个从迄今取得前8个字节的有效的ObjectId,休息只是零和然后做类似于这样的查询:'{_id:{$ gt:ObjectId(“5087e5b106cffca815000000”)} }' – 2012-11-27 22:34:14
有一个很好的答案[我可以通过日期查询MongoDB ObjectId吗?](http:// stackoverflow。 COM /问题/ 8749971 /罐-I-查询的mongodb-的objectid按日期),其包括一个'objectIdWithTimestamp()'JavaScript函数。您可以保存此功能在您的[.mongorc.js(http://www.mongodb.org/display/DOCS/Overview+-+The+MongoDB+Interactive+Shell#Overview-TheMongoDBInteractiveShell-.mongorc.js)有它在启动时你'mongo'外壳可用。 – Stennie