在 RavenDB 中设置操作
本文关键字:操作 设置 RavenDB | 更新日期: 2023-09-27 17:57:15
我读了这篇关于 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();
请参阅 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);