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を参照してください

最初のパラメーターは、更新するインデックスの名前です。2 番目のパラメーターは、where 句を指定できるインデックス クエリです。クエリの構文は lucene 構文 ( http://lucene.apache.org/java/2_4_0/queryparsersyntax.html ) です。3 番目のパラメーターは update 句です。4 番目のパラメーターは、古い結果が必要な場合です。

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 に答える