所以我知道我可以打补丁,我知道可以存储,我知道可以放置,但是我清楚的是如何执行“ upsert”类型的操作,如果要在其中添加对象,它不存在,或者如果存在则进行修补。
在RavenDb 4.1+中有可能吗?
现在,我有点在这里,但感觉不对:
foreach (var flag in data)
{
var exists = await _session.Advanced.ExistsAsync(flag.Id);
if (!exists)
{
await _session.StoreAsync(flag);
}
else
{
await _store.Operations.ForDatabase("FeatureFlags").SendAsync(
new PatchOperation(
id: flag.Id,
changeVector: null,
patch: new PatchRequest
{
Script = @"
this.Name = args.Name
this.Description = args.Description
",
Values =
{
["Name"] = flag.Name,
["Description"] = flag.Description
}
}));
}
}
await _session.SaveChangesAsync();
答案 0 :(得分:2)
将 uniques(.[]
| select(.accountEnabled==true)
| select(.assignedPlans[].service=="exchange" and .assignedPlans[].capabilityStatus=="Enabled")
| .proxyAddresses[] )
与 patchIfMissing
或 PatchCommandData
如果文档不存在,这提供了运行脚本的选项。
“修改或创建”操作方式。