MongoDB保存并更新

Viv*_*day 11 mongodb

在阅读Mongo Save and Update时,我对每篇文章都有点混淆

MongoDB的update()和save()方法用于将文档更新到集合中.update()方法更新现有文档中的值,而save()方法用save()方法中传递的文档替换现有文档.

请让我知道两者的区别.

Phi*_*ipp 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 });
Run Code Online (Sandbox Code Playgroud)


Sal*_*ali 5

从文档中:

保存命令。

save() 方法使用 insert 或 update 命令,这些命令使用默认的写入关注。要指定不同的写入关注点,请将写入关注点包含在 options 参数中。

如果文档不包含 _id 字段,则 save() 方法将调用 insert() 方法。

如果文档包含 _id 字段,则 save() 方法相当于将 upsert 选项设置为 true 并将查询谓词设置为 _id 字段的更新。

更新命令

如果未指定 upsert

修改集合中的现有文档或文档。该方法可以修改现有文档的特定字段或完全替换现有文档,具体取决于更新参数。

如果 upsert 为 true 并且没有文档与查询条件匹配,则 update() 会插入单个文档。


所以它们非常相似,都可以更新和插入文档。不同的是save只能更新一个文档。