4

我阅读了有关 ravendb 集合操作的这篇文章,但它并没有准确地告诉我如何通过 C# 更新一组文档。我想更新所有符合特定条件的文档的字段。或者换一种说法,我想采用这个 C# 并使其更高效:

var session = db.GetSession();
foreach(var data in session.Query<Data>().Where(d => d.Color == "Red"))
{
    data.Color = "Green";
    session.Store(data);
}
session.SaveChanges();
4

1 回答 1

6

请参阅http://ravendb.net/docs/2.5/faq/denormalized-updates

第一个参数是您要更新的索引的名称。第二个参数是索引查询,可让您指定 where 子句。查询的语法是 lucene 语法 ( http://lucene.apache.org/java/2_4_0/queryparsersyntax.html )。第三个参数是更新子句。第四个参数是如果你想要陈旧的结果。

documentStore.DatabaseCommands.UpdateByIndex("DataByColor",
    new IndexQuery
    {
        Query = "Color:red"
    }, new[]
    {
            new PatchRequest
            {
                Type = PatchCommandType.Set,
                Name = "Color",
                Value = "Green"
            }
    },
    allowStale: false);
于 2011-05-23T15:52:59.127 回答