MongoDB小技巧-用ObjectID查询某一时间范围内的数据

ObjectID是由精确到秒的时间戳再加上机器标识等信息组成的,并且建有索引,因此ObjectID本身就可以用于按时间范围查询数据,而不用专门另建时间戳字段和索引。

下面用javascript代码片段说明如何使用ObjectID查询某一时间范围内的数据:

function timeToObjId( time ) {
    var t = new Date(time);
    t = t.getTime()/1000; // 转换成秒数
    return t.toString(16)+'0000000000000000'; // 转换成16进制的字符串,再加补齐16个0
}

var objIdTimeFrom = timeToObjId( '2015-08-01 10:42:01' );
var objIdTimeTo = timeToObjId( '2015-08-01 10:42:59' );

// 查询MongoDB数据库
db.table1.find({
    '_id': {
        '$gt': ObjectId( objIdTimeFrom ),
        '$lt': ObjectId( objIdTimeto )
    }
}).sort({
    '_id': 1
});


你可能感兴趣的:(MongoDB小技巧-用ObjectID查询某一时间范围内的数据)