我有包含文档的数据库,每个文档具有以下结构:
{
name: "name1",
group: "group1",
source: "source1",
context: "context1"
}
仅当没有其他具有相同名称和组(组和名称是键)的文档时,我才想添加新文档。 如何使用这种条件创建单个查询,该查询首先检查条件,然后将新文档添加到集合中?
答案 0 :(得分:1)
您可以尝试另一种方法:在“名称”和“组”上创建唯一索引。
官方文档中的唯一索引:https://docs.mongodb.com/manual/core/index-unique/
在命令外壳中运行此命令:
db.your_collection.createIndex({“ name”:1,“ group”:1},{unique:true}) { “ createdCollectionAutomatically”:否, “ numIndexesBefore”:1, “ numIndexesAfter”:2, “好”:1 }
当您尝试插入具有相同数据的另一个文档时,会收到错误消息,并且不会插入数据:
> db.your_collection.insert({ name: "name1",group: "group1",source: "source1",context: "context1"})
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 11000,
"errmsg" : "E11000 duplicate key error collection: test.some index: name_1_group_1 dup key: { : \"name1\", : \"group1\" }"
}
})
对于MongoDb> 2.4字节为findAndModify:https://docs.mongodb.com/manual/reference/method/db.collection.findAndModify/