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]的文档时才添加新文档的主要内容,如果未能解决你的问题,请参考以下文章

如何查询具有相同字段的两个表,仅当字段值相同时才返回id

MongoDB + Mongoose:仅当给定键不存在或具有虚假值时才设置

SQL Query 从一行中的单个表返回多个键值对

Hibernate HQL:当且仅当所有子实体都具有相同值的属性时,如何选择父实体?

仅当文档中的属性与另一个属性具有相同的值时,才确保它们是唯一的

在 Analytics Query 中使用多个分区键将数据存储在多个 Azure 存储表中