具有约定的ObjectID

时间:2014-06-02 20:29:28

标签: node.js mongodb mongoose

我需要使用约定生成id,例如:

而不是得到:“538cd180e381f20d1c1cd2a2” 我想要一个像这样的ID:“p38cd180e381f20d1c1cd2a2”

所以我想要的是我的ID以辅音字母开头。

有没有人知道如何在驱动程序中实现这一点,我的意思是,在“new mongo.ObjectId()”上获取该行为?

提前致谢。

3 个答案:

答案 0 :(得分:1)

您可以使用以下内容来获取以辅音开头的ID

db.collection.insert({“_ id”:“p”+ new ObjectId()})

你可以使用任何其他字符串代替“p”,字符串将附加到mongodb生成的id的开头。

答案 1 :(得分:0)

简答:很抱歉,到目前为止还没有标准方法可以实现此目的。

详细解答和解决方法:MongoDB或驱动程序生成的ID是创建时间(作为时间戳),下一个ID的增量值,生成id的机器以及进程ID的组合生成此文档ID的进程。所有这些信息都可以在生成的ID中找到,并且可以提取回来。现在,这就是您所获得的,并且不支持从驱动程序算法生成您自己的自定义ID。

如果您想自定义您的id生成并能够使用这些属性,那么您可以嵌入MongoDB用于生成id的所有这些信息,并将此信息添加到您的文档本身。通过这样做,您将能够重现MongoDB从id生成的信息。在将文档插入MongoDB时,您可以为您的文档提供符合您要求的自定义ID。

因此,如果您以后希望根据创建时间或机器进行比较,则可以从添加到文档本身的信息中进行比较。

答案 2 :(得分:0)

使用代码:db.collection.insert({"customId":"p"+new ObjectId()})。并让您的代码使用此customId。