如何有条件地在RavenDB中修补文档。下面的代码只是修改了所有类型patron的文件到Middle Initial = JJJ。我也想在每个条件下执行此操作..例如..为相同的Patrons文档类型执行相同的修补程序..但仅适用于具有City =“New York”的那些
store.DatabaseCommands.UpdateByIndex("Raven/DocumentsByEntityName",
new IndexQuery { Query = "Tag:Patrons" },
new[]
{
new PatchRequest
{
Type = PatchCommandType.Set,
Name = "MiddleInitial",
Value = "JJJ"
}
}, allowStale: false);
答案 0 :(得分:3)
编辑:我的答案似乎错了,因为Ayende在答案中解释了如何做到这一点。
这是目前无法完成的事情。然而,Matt Warren已经实现了基于IronJS的东西来完成这些工作。我不知道它何时以及是否会成为主要产品的一部分,但如果你确实需要它,你当然可以使用他的Github回购。
相反,我建议您自行修补文档或不对数据进行非规范化,并使用.Include()代替,如果这适用于您的情况。
答案 1 :(得分:3)
ZVenue, 你可以使用:
store.DatabaseCommands.UpdateByIndex("Patrons/ByCity",
new IndexQuery { Query = "City:\"New York\"" },
new[]
{
new PatchRequest
{
Type = PatchCommandType.Set,
Name = "MiddleInitial",
Value = "JJJ"
}
}, allowStale: false);
Patrons / ByCity指数定义为:
from p in docs.Patrons select new { p.City }