MongoDB 中的 ID 自动递增?

问题描述 投票:0回答:1

我目前正在使用 MongoDB,我需要为添加到集合中的新文档实现自动递增字段(如“id”)。最新的 MongoDB 版本中是否有支持此功能的内置功能,或者我是否需要实施解决方法?

mongodb mongodb-query
1个回答
0
投票

MongoDB本身不支持自动递增字段。但是,您可以通过使用专用计数器集合和 MongoDB 原子 findAndModifyfindOneAndUpdate 操作的手动解决方法来实现此功能。

第 1 步:创建计数器集合 创建一个名为 counters 的集合来存储每个需要自动递增字段的集合的序列值。例如:

    {
  "_id": "myCollection", // Identifier for the collection that needs auto-increment
  "seq": 0              // Current sequence value
}

插入您要跟踪的集合的初始文档:

db.counters.insertOne({ _id: "myCollection", seq: 0 })

第 2 步:自动递增计数器 使用 findAndModifyfindOneAndUpdate 操作以原子方式递增序列号。这确保了线程安全并避免竞争条件。

命令示例:

db.counters.findOneAndUpdate(
   { _id: "myCollection" },    // Match the specific counter
   { $inc: { seq: 1 } },       // Increment the `seq` field by 1
   { returnDocument: "after" } // Return the updated document
)

这将增加 seq 字段并返回更新后的值。输出将如下所示:

{
  "_id": "myCollection",
  "seq": 1
}

第 3 步:使用增量值 检索递增的 seq 值后,您可以将其用作目标集合中的“id”或任何自动递增字段。

例如,将新文档插入到目标集合中:

db.myCollection.insertOne({
  _id: 1,            // Use the auto-incremented value
  name: "Document 1" // Other fields
})
© www.soinside.com 2019 - 2024. All rights reserved.