我有一些更新cosmos DB容器中记录的代码(参见下面的简化代码片段)。但是,还有其他独立的过程也会从其他系统更新相同的记录。在下面的示例中,如果状态是一个特定的值,我希望upsert_item()是一个no op,如果容器中的同一条记录已经更新到特定的“final”状态。解决这个问题的一种方法是在每次更新之前读取值,但这有点太贵了。有没有一种简单的方法可以基于服务器端触发器将upsert_item()变成no op?任何指点都将不胜感激
client = CosmosClient(<end_pt>, <key>)
database_name = "cosmosdb"
container_name = "solar_system"
db_client = client.get_database_client(database_name)
db_container = db_client.get_container_client(container_name)
uid, planet, state = get_planetary_config()
# How can I make this following update a no-op depending on current state in the database?
json_data = {"id": str(uid), "planet": planet, "state": state}
db_container.upsert_item(body=json_data)
正如我所知,cosmos db server side trigger不满足您的需要。调用它是为了执行pre函数或post函数,而不是判断文档是否满足某些条件
因此,Cosmos Db本机不支持使用特定条件进行更新。在执行更新操作之前,需要读取值并判断条件
相关问题 更多 >
编程相关推荐