MongoDB ObjectId中的自定义日期

时间:2015-11-21 09:56:49

标签: mongodb

MongoDB将创建的时间戳存储在主键字段_id ObjectId中。该字段已编入索引。

我需要按日期(而不是创建日期)存储和过滤文档,我想利用这个字段。

如何使用自定义日期生成唯一的ObjectIds?我应该这样做吗?或者我应该为我的日期创建另一个字段并将其编入索引。

2 个答案:

答案 0 :(得分:0)

MongoDB自动生成ObjectId,并在创建新文档时在文档的 _id 字段中填充它。

根据MongoDB文档

ObjectId是一个12字节的BSON类型,具有以下结构

前4个字节表示自unix时期以来的秒数

接下来的3个字节是机器标识符

接下来的2个字节由进程ID

组成

最后3个字节是随机计数器值

以下是用于生成ObjectId

的代码段
Object_id = ObjectId()

我们还可以指定12字节自定义ID来生成ObjectId

 Object_id = ObjectId("5349b4ddd2781d08c09890f4")

答案 1 :(得分:0)

对于希望为自定义时间戳创建新的mongo objectId的人们,将以下内容用于mongoose库

const mongoose = require('mongoose');


let anyTimeInMillisecs = Date.now();
var thisTimeStamp = Math.floor(anyTimeInMillisecs / 1000);
var newObjId = new mongoose.Types.ObjectId(thisTimeStamp); //our custom object ID