自增id
最后更新于:2022-04-02 03:59:39
[TOC]
## 概述
默认为12字节的唯一索引,要设置自增id需要一个记录自增值的表
### 实例
## 创建记录自增值的表
```
db.createCollection("counters")
//记录一个 productid 的自增,设置0,则表的第一个值就是1
db.counters.insert({_id:"productid",sequence_value:0})
//记录一个user_id 的自增
db.counters.insert({_id:"user_id",sequence_value:0})
```
### 创建函数
```
function getNextSequenceValue(sequenceName){
var sequenceDocument = db.counters.findAndModify(
{
query:{_id: sequenceName },
update: {$inc:{sequence_value:1}},
"new":true
});
return sequenceDocument.sequence_value;
}
```
### 添加数据
products 集合
```
db.products.insert({
"_id":getNextSequenceValue("productid"),
"product_name":"Apple iPhone",
"category":"mobiles"})
db.products.insert({
"_id":getNextSequenceValue("productid"),
"product_name":"Samsung S3",
"category":"mobiles"})
```
userid集合
```
db.users.insert({
"_id":getNextSequenceValue("userid"),
"username":"cc",
"age":2})
db.users.insert({
"_id":getNextSequenceValue("userid"),
"username":"bb",
"age":1})
```
';