•   MongoDB教程
  • MongoDB快速入门
  • MongoDB历史
  • MongoDB特点
  • MongoDB数据库的优点
  • MongoDB安装配置(Windows)
  • MongoDB安装配置(Ubuntu)
  • MongoDB安装配置(RedHat/CentOS)
  • MongoDB数据建模
  • MongoDB创建数据库
  • MongoDB删除数据库
  • MongoDB创建集合
  • MongoDB删除集合
  • MongoDB数据类型
  • MongoDB插入文档
  • MongoDB查询文档
  • MongoDB更新文档
  • MongoDB删除文档
  • MongoDB投影(选择字段)
  • MongoDB限制记录数
  • MongoDB排序记录
  • MongoDB索引
  • MongoDB聚合
  • MongoDB复制
  • MongoDB分片
  • MongoDB备份与恢复
  • MongoDB部署
  • Java连接MongoDB操作
  • Python连接MongoDB操作
  • PHP连接MongoDB操作
  • Ruby连接MongoDB操作
  • 高级部分
  • MongoDB关联关系
  • MongoDB数据库引用
  • MongoDB覆盖查询
  • MongoDB分析查询
  • MongoDB原子操作
  • MongoDB高级索引
  • MongoDB索引限制
  • MongoDB ObjectId
  • MongoDB Map Reduce
  • MongoDB文本搜索
  • MongoDB正则表达式
  • MongoDB GridFS
  • MongoDB固定循环集合
  • MongoDB自动递增序列
  • 用户及安全
  • MongoDB安全检查表
  • MongoDB认证
  • MongoDB用户
  • MongoDB添加用户
  • MongoDB启用身份验证
  • MongoDB管理用户和角色
  • MongoDB更改用户密码和自定义数据

MongoDB自动递增序列

MongoDB中没有类似SQL数据库中那么拿来即用的自动增量功能。 默认情况下,它使用_id字段的12字节ObjectId作为唯一标识文档的主键。 但是,可能存在我们可能希望_id字段拥有除ObjectId之外的一些自动递增值的情况。

由于MongoDB不提供默认自动增长功能,所以我们通过使用MongoDB文档中所建议的计数器集合以编程的方式来实现此功能。

使用计数器集合

考虑以下product文档。 我们希望_id字段是从:1,2,3,4到n开始的自动递增整数序列。

{
  "_id":1,
  "product_name": "Huawei P9",
  "category": "mobiles"
}

为此,创建一个计数器集合,它将跟踪所有序列字段的最后一个序列值。

>db.createCollection("counters")

现在,将把以下文档插入计数器集合中,以productid作为键 -

{
  "_id":"productid",
  "sequence_value": 0
}

字段sequence_value跟踪序列的最后一个值。使用以下代码将此序列文档插入计数器集合中 -

>db.counters.insert({_id:"productid",sequence_value:0})

使用Javascript函数

现在将在创建一个新文档时使用函数getNextSequenceValue,并将返回的序列值分配为文档的_id字段的值。

使用以下代码插入两个示例文档 -

>db.products.insert({
   "_id":getNextSequenceValue("productid"),
   "product_name":"HuaWei P9",
   "category":"mobiles"
})

>db.products.insert({
   "_id":getNextSequenceValue("productid"),
   "product_name":"OPPO X6s",
   "category":"mobiles"
})

如上所示,使用getNextSequenceValue函数来设置_id字段的值。

>db.products.find()

上述查询返回了具有自动递增的_id字段的值,如下文档所示 -

{ "_id" : 1, "product_name" : "HuaWei P9", "category" : "mobiles"}
{ "_id" : 2, "product_name" : "OPPO X6s", "category" : "mobiles" }

上一篇:MongoDB固定循环集合下一篇:MongoDB安全检查表