在阅读有关Mongo Save and Update的内容时,我对每篇文章感到有点混淆
MongoDB的update()和save()方法用于将文档更新到集合中。 update()方法更新现有文档中的值,而save()方法用save()方法中传递的文档替换现有文档。
请让我知道两者的区别。
答案 0 :(得分:15)
update
更改find-parameters找到的现有文档,并且在没有此类文档时不执行任何操作(除非您使用upsert
选项)。
save
不允许任何查找参数。它会检查是否存在与您保存的文档具有相同_id
的文档。如果它存在,它将取代它。如果不存在此类文档,则会将文档作为新文档插入。当您插入的文档没有_id
字段时,它会在插入之前生成一个带有新创建的ObjectId的字段。
collection.save(document);
基本上是以下的简写:
if (document._id == undefined) {
document._id = new ObjectId();
}
collection.update({ "_id":document._id }, document, { upsert:true });
答案 1 :(得分:4)
来自文档:
save()方法使用insert或update命令 使用默认的写入问题。要指定不同的写入问题, 在options参数中包含write关注。
如果文档不包含_id字段,则使用save()方法 调用insert()方法。
如果文档包含_id字段,则save()方法为 相当于将upsert选项设置为true且更新的更新 在_id字段上查询谓词。
如果没有指定upsert
修改集合中的现有文档。方法 可以修改现有文档或文档的特定字段 完全替换现有文档,具体取决于更新 参数。
如果upsert为true且没有文档符合查询条件,则update() 插入单个文档。
所以它们非常相似,都可以更新和插入文档。不同之处在于save只能更新一个文档。