是否有任何方法或包可以帮助我向现有集合添加自动增量?互联网上充满了关于如何在创建集合之前添加AI的信息,但是当集合已经存在时,我没有找到有关如何添加AI的信息......
答案 0 :(得分:1)
MongoDB将所有文档顶级的_id
字段保留为主键。 _id必须是唯一的,并且始终具有带唯一约束的索引。这是一个自动递增的字段。但是,可以按照MongoDB文档中的教程定义自己的自动递增字段。
Tutorial link
:https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field/
答案 1 :(得分:1)
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"
})