atomic query-仅当没有其他具有相同键[duplicate]的文档时才添加新文档
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了atomic query-仅当没有其他具有相同键[duplicate]的文档时才添加新文档相关的知识,希望对你有一定的参考价值。
我有包含文档的数据库,每个文档具有以下结构:
{
name: "name1",
group: "group1",
source: "source1",
context: "context1"
}
仅当没有其他具有相同名称和组名的文档(组和名称为键)时,我才想添加新文档。如何使用这种条件创建单个查询,该查询首先检查条件,然后将新文档添加到集合中?
答案
您可以尝试其他方法:在“名称”和“组”上创建唯一索引。
在命令外壳中运行此命令:
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" }"
}
})
以上是关于atomic query-仅当没有其他具有相同键[duplicate]的文档时才添加新文档的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB + Mongoose:仅当给定键不存在或具有虚假值时才设置
Hibernate HQL:当且仅当所有子实体都具有相同值的属性时,如何选择父实体?