Условные патч-запросы в RavenDB - PullRequest
3 голосов
/ 22 декабря 2011

Как мне патчить документ в RavenDB условно. Приведенный ниже код просто исправляет все документы типа patron в Middle Initial = JJJ. Я также хотел бы сделать это для каждого условия .. например .. сделать тот же патч для тех же типов документов Патроны ... но только для тех, которые имеют 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);

Ответы [ 2 ]

3 голосов
/ 22 декабря 2011

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 }
3 голосов
/ 22 декабря 2011

РЕДАКТИРОВАТЬ: Кажется, что я был не прав с этим ответом, потому что Ayende объясняет способ, как это сделать в своем ответе.

Это то, что не может быть сделано в данный момент. Тем не менее, Мэтт Уоррен реализовал что-то на основе IronJS для этого. Я не знаю, когда и если он станет частью основного продукта, но вы, безусловно, можете использовать его репозиторий Github, если он вам действительно нужен.

Вместо этого я предлагаю вам либо исправить документы самостоятельно, либо не денормализовать данные и использовать вместо этого .Include (), если это применимо в вашем случае.

...