emi*_*zel 56 shell timestamp mongodb unix-timestamp
我正在使用Mongo shell来查询我的Mongo数据库.我想使用ObjectID中包含的时间戳作为我的查询的一部分,也作为一个列提取到输出中.我已经设置了Mongo来自己创建ObjectID.
我的问题是我无法找到如何使用ObjectID来提取其时间戳.
以下是我试图开始工作的查询.'createdDate'字段是占位符; 不确定正确的字段是什么:
//Find everything created since 1/1/2011
db.myCollection.find({date: {$gt: new Date(2011,1,1)}});
//Find everything and return their createdDates
db.myCollection.find({},{createdDate:1});
Run Code Online (Sandbox Code Playgroud)
Chr*_*tow 95
你需要的功能是这个,它已经包含在shell中:
ObjectId.prototype.getTimestamp = function() {
return new Date(parseInt(this.toString().slice(0,8), 16)*1000);
}
Run Code Online (Sandbox Code Playgroud)
从文档中查看此部分:
这个单元测试也说明了同样的情况:
> db.col.insert( { name: "Foo" } );
> var doc = db.col.findOne( { name: "Foo" } );
> var timestamp = doc._id.getTimestamp();
> print(timestamp);
Wed Sep 07 2011 18:37:37 GMT+1000 (AUS Eastern Standard Time)
> printjson(timestamp);
ISODate("2011-09-07T08:37:37Z")
Run Code Online (Sandbox Code Playgroud)
Ste*_*fan 16
这个问题有助于理解如何在查询情境中使用_id的嵌入式时间戳(请参阅Mongo Extended JSON文档).这就是它的完成方式:
col.find({...,
'_id' : {'$lt' : {'$oid' : '50314b8e9bcf000000000000'}}
})
Run Code Online (Sandbox Code Playgroud)
查找比oid给出的文档更早创建的文档.与自然排序和限制一起使用,你可以利用BSON _ids创建类似Twitter的API查询(给我你最后的OID,我将再提供20个)
在python中你可以这样做:
>>> from bson.objectid import ObjectId
>>> gen_time = datetime.datetime(2010, 1, 1)
>>> dummy_id = ObjectId.from_datetime(gen_time)
>>> result = collection.find({"_id": {"$lt": dummy_id}})
Run Code Online (Sandbox Code Playgroud)
我认为, ObjectId.from_datetime() - 它是标准 bson lib 的一种有用方法,也许其他语言绑定有替代的内置函数。来源:http : //api.mongodb.org/python/current/api/bson/objectid.html
| 归档时间: |
|
| 查看次数: |
48052 次 |
| 最近记录: |