让我们有一个MongoDB集合有三个文档..
db.collection.find()
{ _id:'...',user: 'A',title: 'Physics',Bank: 'Bank_A' } { _id:'...',title: 'Chemistry',Bank: 'Bank_B' } { _id:'...',user: 'B',Bank: 'Bank_A' }
我们有一个文件,
doc = { user: 'B',Bank:'Bank_A' }
如果我们使用
db.collection.insert(doc)
这里,这个重复的文档将被插入到数据库中.
{ _id:'...',Bank: 'Bank_A' }
如何停止此副本.哪个领域应该建立索引或任何其他方法?
解决方法
不要使用插入.
使用update with upsert=true
.更新将查找与您的查询匹配的文档,然后将修改所需的字段,然后,您可以告诉它:如果您希望在没有文档匹配您的查询时插入,则为True.
db.collection.update( <query>,<update>,{ upsert: <boolean>,multi: <boolean>,writeConcern: <document> } )
所以,举个例子,你可以使用这样的东西:
db.collection.update(doc,doc,{upsert:true})