db.collection.findAndModify({
query: { _id: "some potentially existing id" },
update: {
$setOnInsert: { foo: "bar" }
},
new: true, // return new doc if one is upserted
upsert: true // insert the document if it does not exist
})
由于 $setOnInsert只影响正在插入的文档,因此如果找到现有文档,则不会进行任何修改。如果不存在文档,它将用指定的 _ id 插入一个文档,然后执行只插入集。在这两种情况下,都会返回文档。