让我们有一个 MongoDB
集合,其中包含三个文档..
db.collection.find()
{ _id:'...', user: 'A', title: 'Physics', Bank: 'Bank_A' }
{ _id:'...', user: 'A', title: 'Chemistry', Bank: 'Bank_B' }
{ _id:'...', user: 'B', title: 'Chemistry', Bank: 'Bank_A' }
我们有一个文档,
doc = { user: 'B', title: 'Chemistry', Bank:'Bank_A' }
如果我们使用
db.collection.insert(doc)
在这里,这个重复的文档将被插入到数据库中。
{ _id:'...', user: 'A', title: 'Physics', Bank: 'Bank_A' }
{ _id:'...', user: 'A', title: 'Chemistry', Bank: 'Bank_B' }
{ _id:'...', user: 'B', title: 'Chemistry', Bank: 'Bank_A' }
{ _id:'...', user: 'B', title: 'Chemistry', Bank: 'Bank_A' }
如何阻止这种重复。应该对哪个字段进行索引或任何其他方法?
最佳答案
不要使用插入。
使用 update with upsert=true
.更新将查找与您的查询匹配的文档,然后它将修改您想要的字段,然后,如果没有文档与您的查询匹配,您可以告诉它 upsert:True 如果您想插入。
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
因此,对于您的示例,您可以使用如下内容:
db.collection.update(doc, doc, {upsert:true})
关于mongodb - 如何停止在 mongodb 集合中插入重复文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24122981/