是否有任何方法或包,可以帮助我添加自动增量到现有的集合?互联网上充满了信息,关于如何在创建集合之前添加AI,但我没有找到在集合已经存在的情况下如何添加AI的信息…
发布于 2017-07-25 20:10:51
MongoDB没有内置的自动增量功能。
创建一个新集合以跟踪用于插入的最后一个序列值:
db.createCollection("counter")它将只保存一条记录,如下所示:
db.counter.insert({_id:"mySequence",seq_val:0})创建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;
}要更新现有集合中所有已经存在的值,这应该是可行的(对于空的{},如果您只想更新一些文档,则可以设置条件):
db.myCollection.update({},
{$set:{'_id':getNextSequenceVal("mySequence")}},{multi:true})现在您可以将新记录插入到现有集合中,如下所示:
db.myCollection.insert({
"_id":getNextSequenceVal("mySequence"),
"name":"ABC"
})发布于 2017-07-25 20:07:09
MongoDB将所有文档顶层的_id字段保留为主键。_id必须是唯一的,并且始终具有具有unique约束的索引。它是一个自动递增的字段。但是,可以按照MongoDB文档中的教程定义您自己的自动递增字段。
Tutorial link:https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field/
https://stackoverflow.com/questions/45302487
复制相似问题