我通过标准驱动程序将许多现有值导入我的mongodb(包括“旧”id - 整数值)。现在我不时会遇到重复的密钥错误。
要解决这个问题,我必须手动设置hilo序列的起始值。怎么办呢?
提前致谢
答案 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,您可以安全地修改该值,而不会意外地破坏任何内容。