首页 文章

MongoDB:使用_id和ObjectID对插入时间进行范围查询

提问于
浏览
0

我正在尝试使用mongodb 's ObjectID to do a range query on the insertion time of a given collection. I can' t真的找到任何可能的文档,除了这篇博文:http://mongotips.com/b/a-few-objectid-tricks/ .

我想获取在给定时间戳之后创建的所有文档 . 使用nodejs驱动程序,这就是我所拥有的:

var timeId = ObjectId.createFromTime(timestamp);
var query = {
    localUser: userId,
    _id: {$gte: timeId}
};
var cursor = collection.find(query).sort({_id: 1});

我总是获得相同数量的记录(27个集合中的19个),与时间戳无关 . 我注意到createFromTime只填充与时间相关的objectid中的字节,其他的则保留为0(如下所示:4f6198be0000000000000000) .

我尝试使用ObjectID的原因是我在mongodb服务器上插入文档时需要时间戳,而不是在将文档传递给节点中的mongodb驱动程序时 .

任何人都知道如何使这项工作,或者有另一个想法如何生成和查询在mongodb服务器上生成的插入时间?

1 回答

  • 0

    不确定ruby中的nodejs驱动程序,你可以简单地应用这样的范围查询 .

    jan_id = BSON::ObjectId.from_time(Time.utc(2012, 1, 1))       
    
    feb_id = BSON::ObjectId.from_time(Time.utc(2012, 2, 1)) 
    
    @users.find({'_id' => {'$gte' => jan_id, '$lt' => feb_id}})
    

    确保 var timeId = ObjectId.createFromTime(timestamp) 正在创建一个ObjectId .

    也可以在没有本地用户的情

相关问题