MongoDB 自动增长

MongoDB 不内置自增字段,用“计数器集合 + $inc + upsert”原子取号,或用 findAndModify 返回自增后的值。

Advanced
Key PointsMongoDB,自动增长,计数器,$inc,findAndModify

讲解

MongoDB 不内置自增字段,用“计数器集合 + $inc + upsert”原子取号,或用 findAndModify 返回自增后的值。

示例

JavaScript
// 初始化计数器
db.counters.insertOne({ _id: "siteid", seq: 0 })

// 取号(原子)
function nextSeq(name) {
  const r = db.counters.findOneAndUpdate(
    { _id: name }, { $inc: { seq: 1 } },
    { returnDocument: "after", upsert: true });
  return r.seq;
}
db.site.insertOne({ _id: nextSeq("siteid"), title: "runoob" })
Output
-- _id 变成 1、2、3… 的人读友好自增

Friends & Partners