首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为mongodb/node.js中已有的集合添加自动增量?

如何为mongodb/node.js中已有的集合添加自动增量?
EN

Stack Overflow用户
提问于 2017-07-25 19:53:13
回答 2查看 2.8K关注 0票数 0

是否有任何方法或包,可以帮助我添加自动增量到现有的集合?互联网上充满了信息,关于如何在创建集合之前添加AI,但我没有找到在集合已经存在的情况下如何添加AI的信息…

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-25 20:10:51

MongoDB没有内置的自动增量功能。

创建一个新集合以跟踪用于插入的最后一个序列值:

代码语言:javascript
复制
db.createCollection("counter")

它将只保存一条记录,如下所示:

代码语言:javascript
复制
db.counter.insert({_id:"mySequence",seq_val:0})

创建JavaScript函数,如下所示:

代码语言:javascript
复制
function getNextSequenceVal(seq_id){
   // find record with id seq_id and update the seq_val by +1
   var sequenceDoc = db.counter.findAndModify({
      query:{_id: seq_id},
      update: {$inc:{seq_val:1}},
      new:true
   });

   return sequenceDoc.seq_val;
}

要更新现有集合中所有已经存在的值,这应该是可行的(对于空的{},如果您只想更新一些文档,则可以设置条件):

代码语言:javascript
复制
db.myCollection.update({},
   {$set:{'_id':getNextSequenceVal("mySequence")}},{multi:true})

现在您可以将新记录插入到现有集合中,如下所示:

代码语言:javascript
复制
db.myCollection.insert({
   "_id":getNextSequenceVal("mySequence"),
   "name":"ABC"
})
票数 2
EN

Stack Overflow用户

发布于 2017-07-25 20:07:09

MongoDB将所有文档顶层的_id字段保留为主键。_id必须是唯一的,并且始终具有具有unique约束的索引。它是一个自动递增的字段。但是,可以按照MongoDB文档中的教程定义您自己的自动递增字段。

Tutorial linkhttps://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45302487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档