【发布时间】:2014-09-09 13:00:27
【问题描述】:
我想更新一组文档,这些文档是动态查询,例如没有索引。这是一个有效的(伪)示例:
void ChangeOwnerShip(string oldName, string newName) {
var collection = session.Query<GummyBears>()
.Where(p => p.OwnerName == oldName);
foreach (var doc in collection) {
doc.OwnerName == newName;
}
session.SaveChanges();
}
在上面的示例中,我没有考虑到 RavenDB 的文档数量限制(“默认安全”)。但简单地说:它有效。我还没有为此创建索引,RavenDB 在使用时列出了一个动态索引,这似乎工作得很好。
但凭借 RavenDB 中的所有漂亮功能,我确信这不是最理想的方式。
为部分文档更新提供的示例,Batch operations 似乎是为此目的而设计的。但是,这些示例似乎都只与单个文档相关 - 我似乎无法找到一个体面的解释来说明如何使用对象集合。
此外,HTTP API 在multi document operations 上有一些不错的示例。事实上,Set based updates 部分正好提供了我想要实现的场景类型。不过,它需要先创建索引。
不过,我似乎找不到一个像样的示例来说明如何使用 .NET 客户端简单地更新动态集合。简而言之,问题是:与我上面的示例相比,对于集合的简单更新,有什么更好或更明智的方法?
【问题讨论】: