MongoDB 专题
您的位置:database > MongoDB专题 > MongoDB自动递增序列
MongoDB自动递增序列
作者:--    发布时间:2019-11-20

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

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

使用计数器集合

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

{
  "_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" }

网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册