MongoDB 使用空更新文档更新插入
MongoDB upsert with empty update document
我正在尝试弄清楚如何将文档插入到集合中,前提是该文档尚未存在于该集合中。如果文档已经存在,则语句应该是空操作。
我使用带有空更新文档的更新插入的方法:
db.collection.update({ ...query... }, { }, { upsert: true })
但是 Mongo 告诉我 "Update documents cannot be empty"。如何在不不必要地更新现有文档的情况下完成此操作?谢谢
编辑:我的查询文档如下所示:
{
"Chromosome" : "4",
"Position" : 60000,
"Identifier" : "rs1345",
"ReferenceAllele" : "N"
}
您可以通过在更新对象中使用 $setOnInsert
来执行此操作,这仅适用于更新插入导致插入的情况:
var query = {
"Chromosome" : "4",
"Position" : 60000,
"Identifier" : "rs1345",
"ReferenceAllele" : "N"
};
db.collection.update(query, {$setOnInsert: query}, {upsert: true})
在查询中使用的字段上创建唯一索引,然后使用插入。如果相同的文档已经存在,插入将失败。
(无论如何你可能需要一个索引来加快这个操作)
我正在尝试弄清楚如何将文档插入到集合中,前提是该文档尚未存在于该集合中。如果文档已经存在,则语句应该是空操作。
我使用带有空更新文档的更新插入的方法:
db.collection.update({ ...query... }, { }, { upsert: true })
但是 Mongo 告诉我 "Update documents cannot be empty"。如何在不不必要地更新现有文档的情况下完成此操作?谢谢
编辑:我的查询文档如下所示:
{
"Chromosome" : "4",
"Position" : 60000,
"Identifier" : "rs1345",
"ReferenceAllele" : "N"
}
您可以通过在更新对象中使用 $setOnInsert
来执行此操作,这仅适用于更新插入导致插入的情况:
var query = {
"Chromosome" : "4",
"Position" : 60000,
"Identifier" : "rs1345",
"ReferenceAllele" : "N"
};
db.collection.update(query, {$setOnInsert: query}, {upsert: true})
在查询中使用的字段上创建唯一索引,然后使用插入。如果相同的文档已经存在,插入将失败。
(无论如何你可能需要一个索引来加快这个操作)