Indexing RavenDB中的条件修补程序请求

Indexing RavenDB中的条件修补程序请求,indexing,nosql,patch,ravendb,Indexing,Nosql,Patch,Ravendb,如何有条件地在RavenDB中修补文档。下面的代码只是将所有类型为patron的文档补丁到Middle Initial=JJJ。我也希望根据条件这样做。。例如对相同的用户文档类型执行相同的修补程序。。但只适用于那些拥有City=“纽约”的人 EDIT:看来我对这个答案的理解是错误的,因为Ayende在他的答案中解释了一种方法。 这是目前无法做到的事情。然而,Matt Warren已经实现了一些基于IronJS的东西来做这些事情。我不知道什么时候,它是否会成为主要产品的一部分,但如果你真的需要,你

如何有条件地在RavenDB中修补文档。下面的代码只是将所有类型为patron的文档补丁到Middle Initial=JJJ。我也希望根据条件这样做。。例如对相同的用户文档类型执行相同的修补程序。。但只适用于那些拥有City=“纽约”的人


EDIT:看来我对这个答案的理解是错误的,因为Ayende在他的答案中解释了一种方法。

这是目前无法做到的事情。然而,Matt Warren已经实现了一些基于IronJS的东西来做这些事情。我不知道什么时候,它是否会成为主要产品的一部分,但如果你真的需要,你当然可以使用他的Github回购协议

相反,我建议您自己对文档进行修补,或者不要对数据进行反规范化,而是使用.Include()

ZVenue, 您可以使用以下方法进行操作:

store.DatabaseCommands.UpdateByIndex("Patrons/ByCity",
                                      new IndexQuery { Query = "City:\"New York\"" },
                                      new[]
                                        {
                                             new PatchRequest
                                                 {
                                                     Type = PatchCommandType.Set,
                                                     Name = "MiddleInitial",
                                                     Value = "JJJ"                                                           
                                                 }
                                            }, allowStale: false);
其中,用户/按城市指数定义为:

from p in docs.Patrons select new { p.City }

无法有条件地批量更新ravendb文档中的字段。。在这种情况下,请看我对Ayende解决方案的回应。你知道如果这些值嵌套在两到三个层次上,我是否也可以这样做吗?谢谢你,为什么不试试呢?回答你的问题-是的,你可以这样做,就像你在回答中写的那样。您不需要在此处为NullReferenceExceptions设置car,因为RavenDB会为您处理此问题。。我可以在索引中使用这个吗?“从docs.patrons中的p选择新的{p.Zone1.Country.City}”?
from p in docs.Patrons select new { p.City }