MongoDB保存并更新

时间:2015-04-16 06:56:50

标签: mongodb

在阅读有关Mongo Save and Update的内容时,我对每篇文章感到有点混淆

  

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

请让我知道两者的区别。

2 个答案:

答案 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 command.

  

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

     

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

     

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

Update command

如果没有指定upsert

  

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

     

如果upsert为true且没有文档符合查询条件,则update()   插入单个文档。


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