如果该文档尚未存在于该集合中,我正在尝试弄清楚如何将文档插入到集合中。如果文档已经存在,则该语句应为no-op。
我采用的方法是使用带有空更新文档的upsert:
db.collection.update({ ...query... }, { }, { upsert: true })
但Mongo告诉我“更新文件不能为空”。如何在不必要地更新现有文档的情况下完成此操作?感谢。
编辑:我的查询文档如下所示:
{
"Chromosome" : "4",
"Position" : 60000,
"Identifier" : "rs1345",
"ReferenceAllele" : "N"
}
答案 0 :(得分:5)
您可以在更新对象中使用$setOnInsert
来执行此操作,这仅适用于upsert导致插入的情况:
var query = {
"Chromosome" : "4",
"Position" : 60000,
"Identifier" : "rs1345",
"ReferenceAllele" : "N"
};
db.collection.update(query, {$setOnInsert: query}, {upsert: true})
答案 1 :(得分:0)
在查询中使用的字段上创建唯一索引,然后使用insert。如果已存在相同的文档,则插入将失败。
(无论如何你可能想要一个索引来快速完成这个操作)