开发者社区 问答 正文

MongoDB的增量设计方法

请教:MongoDB的增量设计,某一字段自增或按某个值增长,保证唯一 。
请各位帮忙看一下, 谢谢

展开
收起
落地花开啦 2016-02-26 14:11:14 1938 分享 版权
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    利用 Counter Collection实现

    利用一个单独的计数器集合去跟踪我们使用的最后一个数字序列。该_id字段包含了序列名称和序列字段中该序列最后的值。

    1、插入计数器集合,设置初始值为userid:

    ` db.counters.insert(
       {
          _id: "userid",
          seq: 0
       }
    ) `
    2、创建一个getNextSequence函数,参数为序列的name,函数使用findandmodify()方法去自动增长序列的值并返回增长之后的结果:           
    function getNextSequence(name) {
         var ret = db.counters.findAndModify(
                {
                  query: { _id: name },
                  update: { $inc: { seq: 1 } },
                  new: true
                }
         );
       
         return ret.seq;
      }

    3、在接下来插入数据的时候,使用getNextSequence这个函数:
    `db.users.insert(

       {
         _id: getNextSequence("userid"),//注意getNextSequence参数要与计数器集合中_id值一致
         name: "Sarah C."
       }
    )
    db.users.insert(
       {
         _id: getNextSequence("userid"),
         name: "Bob D."
       }
    )`
    4、你可以试着查看结果:   

    db.users.find()

    5、_id字段包含了自动增长序列的值:

    ` {

      _id : 1,
      name : "Sarah C."
    }
    {
      _id : 2,
      name : "Bob D."
    }`
    2019-07-17 18:48:12
    赞同 展开评论