如何在MongoDB Norm中设置hilo序列起始值?

时间:2010-08-13 10:00:29

标签: mongodb norm

我通过标准驱动程序将许多现有值导入我的mongodb(包括“旧”id - 整数值)。现在我不时会遇到重复的密钥错误。

要解决这个问题,我必须手动设置hilo序列的起始值。怎么办呢?

提前致谢

1 个答案:

答案 0 :(得分:1)

HiLo密钥信息存储在NormHiLoKey集合中。您可以递增此集合中的值,以使用Mongo shell中的以下命令更改生成的键的起始值:

db.NormHiLoKey.update({ _id: "nameOfCollection" }, { $inc: { ServerHi: 42 } })

注意

不要从Mongo shell 设置 ServerHi值! ServerHi存储为64位整数,无法在shell中表示。因此,如果您从shell设置值,它将更改基础数据类型并中断NoRM反序列化器。

如果运行db.NormHiLoKey.find()命令,您可能会看到具有floatApprox属性的对象。这表明底层数据类型是64位整数。通过使用$inc operator,您可以安全地修改该值,而不会意外地破坏任何内容。