开发者

Set operations in RavenDB

I read this article on rav开发者_如何学Goendb set operations, but it didn't show me exactly how to update a set of documents via C#. I would like to update a field on all documents that match a certain criteria. Or to put it another way, I would like to take this C# and make it more efficient:

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


See http://ravendb.net/docs/2.5/faq/denormalized-updates

First parameter is the name of the index you wish to update. Second parameter is the index query which lets you specify your where clause. The syntax for the query is the lucene syntax (http://lucene.apache.org/java/2_4_0/queryparsersyntax.html). Third parameter is the update clause. Fourth parameter is if you want stale results.

documentStore.DatabaseCommands.UpdateByIndex("DataByColor",
    new IndexQuery
    {
        Query = "Color:red"
    }, new[]
    {
            new PatchRequest
            {
                Type = PatchCommandType.Set,
                Name = "Color",
                Value = "Green"
            }
    },
    allowStale: false);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜