gpt4 book ai didi

javascript - 帮助 MongoDB 和唯一 ID 生成

转载 作者:可可西里 更新时间:2023-11-01 09:57:34 28 4
gpt4 key购买 nike

现在,我们正在使用 MongoDB 内置的 ID 生成所有唯一 ID。在某些情况下,我们需要在向数据库添加任何内容之前为对象创建一个 ID。

我们可以创建一个条目获取 id,然后在我们最终永远不需要它时删除该条目,但我宁愿不要为了这样一个简单的任务而给系统增加负载。有没有什么方法可以与 mongos native 方法同步来执行此操作而不会给数据库带来不必要的负载?

谢谢

最佳答案

这很简单。除了 upsert 操作之外,ObjectId 是客户端生成的。换句话说,当您从应用程序中执行保存操作时,驱动程序将自动执行(伪):

if(!doc.containsKey("_id"))
doc.put(_id, new ObjectId());

因此,您所要做的就是自己生成一个 ObjectId,用它做任何您需要做的事情,然后将文档的 _id 设置为该值,而不是让 mongo 驱动程序为您做这件事。

请注意,这与让驱动程序生成 ID 一样完全安全。 ObjectId 旨在消除 ID 冲突(阅读:使冲突变得无关紧要的可能性不大)。此外,生成 ID 和存储它之间的时间也不会引入 ID 冲突问题。

如果您保存具有数据库中已存在的_id 的文档,它将覆盖具有该_id 的原始文档。

如果您插入一个 _id 已经存在的文档,您将得到一个重复的 _id 错误(错误 11000)。

关于javascript - 帮助 MongoDB 和唯一 ID 生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7441480/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com