我正在尝试理解API的这一部分,以便以最有效的方式更新文档。
鉴于以下内容:
Replace
”要求文档已存在Upsert
”不要求文档存在,但如果要进行更新则需要文档ID。如果我总是要首先查询文档以避免擦除任何未传递回upsert / replace的属性值,并且我不能进行部分更新,那么两者都有什么意义upsert和replace?
我是否错过了这两个命令的预期用例?
答案 0 :(得分:8)
您已经描述了两者之间的主要差异。如果文档尚不存在,Upsert将创建一个文档,否则将覆盖它。替换要求文档已存在,然后覆盖它。使用哪个是您的应用程序的关注点。在某些情况下,您可能希望使用替换,因为如果文档尚不存在,则会在业务逻辑中构成错误。否则它们非常相似。
据我所知,缺乏部分更新可能会令人沮丧。但是,Cosmos以存储过程的形式提供了一个功能强大的服务器端编程模型,您可以使用Javascript编写。您可以轻松创建一个接收部分文档的SPROC,并仅更新或添加新的或更改的属性,这些属性将为您提供最终要查找的功能。