第46章 MongoDB 自动增长教程

第46章 MongoDB 自动增长教程

MongoDB 没有像 SQL 一样有自动增长的功能, MongoDB 的 _id 是系统自动生成的12字节唯一标识。

但在某些情况下,咱们可能需要实现 ObjectId 自动增长功能。

由于 MongoDB 没有实现这个功能,咱们可以通过编程的方式来实现,以下咱们将在 counters 集合中实现_id字段自动增长。


使用 counters 集合

考虑以下 products 文档。咱们希望 _id 字段实现 从 1,2,3,4 到 n 的自动增长功能。


    {
      "_id":1,
      "product_name": "Apple iPhone",
      "category": "mobiles"
    }

为此,创建 counters 集合,序列字段值可以实现自动长:


    >db.createCollection("counters")

现在咱们向 counters 集合中插入以下文档,使用 productid 作为 key:


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

sequence_value 字段是序列通过自动增长后的一个值。

使用以下命令插入 counters 集合的序列文档中:


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


创建 Javascript 函数

现在,咱们创建函数 getNextSequenceValue 来作为序列名的输入, 指定的序列会自动增长 1 并return 最新序列值。在本文的实例中序列名为 productid 。


    >function getNextSequenceValue(sequenceName){
       var sequenceDocument = db.counters.findAndModify(
          {
             query:{_id: sequenceName },
             update: {$inc:{sequence_value:1}},
             "new":true
          });
       return sequenceDocument.sequence_value;
    }


使用 Javascript 函数

接下来咱们将使用 getNextSequenceValue 函数创建一个新的文档, 并设置文档 _id 自动为return 的序列值:


    >db.products.insert({
       "_id":getNextSequenceValue("productid"),
       "product_name":"Apple iPhone",
       "category":"mobiles"})
    
    >db.products.insert({
       "_id":getNextSequenceValue("productid"),
       "product_name":"Samsung S3",
       "category":"mobiles"})

就如阁下所看到的,咱们使用 getNextSequenceValue 函数来设置 _id 字段。

为了验证函数是否有效,咱们可以使用以下命令读取文档:


    >db.products.find()

以上命令将return 以下结果,咱们发现 _id 字段是自增长的:


    { "_id" : 1, "product_name" : "Apple iPhone", "category" : "mobiles"}
    
    { "_id" : 2, "product_name" : "Samsung S3", "category" : "mobiles" }

本专栏所有文章

第1章 MongoDB 教程第2章 NoSQL 简介教程
第3章 MongoDB 简介教程第4章 Windows MongoDB教程
第5章 Linux MongoDB教程第6章 OSX MongoDB教程
第7章 MongoDB 概念解析教程第8章 MongoDB 连接教程
第9章 MongoDB 创建数据库教程第10章 MongoDB 删除数据库教程
第11章 MongoDB 创建集合教程第12章 MongoDB 删除集合教程
第13章 MongoDB 插入文档教程第14章 MongoDB 更新文档教程
第15章 MongoDB 删除文档教程第16章 MongoDB 查询文档教程
第17章 MongoDB 条件操作符教程第18章 MongoDB $type 操作符教程
第19章 MongoDB Limit与Skip方法教程第20章 MongoDB 排序教程
第21章 MongoDB 索引教程第22章 MongoDB 聚合教程
第23章 MongoDB 复制(副本集)教程第24章 MongoDB 分片教程
第25章 MongoDB 备份与恢复教程第26章 MongoDB 监控教程
第27章 MongoDB Java教程第28章 MongoDB PHP 扩展教程
第29章 MongoDB PHP教程第30章 MongoDB PHP7教程
第31章 Node.js MongoDB教程第32章 MongoDB 关系教程
第33章 MongoDB 数据库引用教程第34章 MongoDB 覆盖索引查询教程
第35章 MongoDB 查询分析教程第36章 MongoDB 原子操作教程
第37章 MongoDB 高级索引教程第38章 MongoDB 索引限制教程
第39章 MongoDB ObjectId教程第40章 MongoDB Map Reduce教程
第41章 MongoDB 全文检索教程第42章 MongoDB 正则表达式教程
第43章 MongoDB 管理工具教程第44章 MongoDB GridFS教程
第45章 MongoDB 固定集合教程第46章 MongoDB 自动增长教程教程

寄语

本文有榴莲酱CSDN原创,欢迎点赞、转载,博客地址:https://blog.csdn.net/qq441540598

  • 面必净,发必理,衣必整,纽必结;头容正,肩容平,胸容宽,背容直;气象勿傲、勿暴;颜色宜和,宜静、宜庄。
  • 只有眼光既远又广的人,才能在人生的道路上扬眉吐气。
  • 胜者为王,败者为寇。我知道明天全世界的人都会因为我战败而责备我,但那又有什么呢?
  • 新的真理一产生总要被斥为异端邪说,而最终则受到盲目的崇拜,这就是真理常遇到的命运
  • 有的感情,无奈分开,但也不失为一段好感情;有的感情,一向在一齐,但双方负能量缠身,这不能就是好感情。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

榴莲酱csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值