简短回答:MongoDB 本身没有像 MySQL 那样内置的“自增主键(AUTO_INCREMENT)”机制,但可以通过“手动方式”实现自增 ID。
下面详细说明:
MongoDB 默认使用 _id 字段,类型通常是 ObjectId:
{
"_id": ObjectId("65f1c2a9e3b4c1a2d3e4f5a6")
}
特点:
MongoDB 官方推荐方式:使用计数器集合(counters collection)
db.counters.insertOne({
_id: "orderId",
seq: 0
})
function getNextSequence(name) {
const result = db.counters.findOneAndUpdate(
{ _id: name },
{ $inc: { seq: 1 } },
{ returnDocument: "after" }
);
return result.seq;
}
db.orders.insertOne({
_id: getNextSequence("orderId"),
name: "订单A"
})
结果:
{ "_id": 1, "name": "订单A" }
{ "_id": 2, "name": "订单B" }
findAndModify / findOneAndUpdate 是原子操作不建议使用自增 ID 的情况:
| 问题 | 答案 |
|---|---|
| MongoDB 有自增吗 | ❌ 没有内置 |
| 能实现自增吗 | ✅ 可以手动实现 |
| 推荐用吗 | ⚠️ 看场景 |
| 默认推荐 | ✅ ObjectId |
如果你愿意,我可以:
你用的是哪种语言?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。