【发布时间】:2010-08-26 20:25:07
【问题描述】:
我通过规范驱动程序将许多现有值导入到我的 mongodb 中(包括“旧”id - 整数值)。现在我不时遇到重复的关键错误。
为了解决这个问题,我必须手动设置 hilo 序列的起始值。如何做到这一点?
提前致谢
【问题讨论】:
我通过规范驱动程序将许多现有值导入到我的 mongodb 中(包括“旧”id - 整数值)。现在我不时遇到重复的关键错误。
为了解决这个问题,我必须手动设置 hilo 序列的起始值。如何做到这一点?
提前致谢
【问题讨论】:
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,您可以安全地修改该值,而不会意外破坏任何内容。
【讨论】: