对于满足给定条件的所有文档,我想修补更新这些文档中的字段。为此,我在 LINQ Pad 中编写了一个查询,以获取所需文档的子集。
那是 :
Session.Query<Movie>()
.Where(x => x.Status == "Released" && x.IsDeleted == false && x.ReleaseDate.Date < new DateTime(2012, 4, 3))
.Dump();
现在我有了文件清单。但我需要修改一个字段。为此,我编写了一个索引和补丁命令。我需要帮助来完成这项任务。
补丁代码(不完整):
store.DatabaseCommands.UpdateByIndex("Movies/NewIndexName",
new IndexQuery { Query = "IsDeleted:false" },
new[]
{
new PatchRequest
{
Type = PatchCommandType.Modify,
Name = "Status",
Value = "Testing"
}
}, allowStale: false);
索引是
from doc in docs.Movies
select new { ReleaseDate = doc.ReleaseDate.Date, IsDeleted = doc.IsDeleted, Status =
doc.Status }
具体来说,我的问题是..我的方法是否正确..如果是,我如何在条件中添加多个条件..它说 Query = "IsDeleted:false" 我可以在查询中添加更多比较检查(如上面的 LINQ 查询)?
编辑:(使用丹尼尔·朗的解决方案)
这给出了格式异常。输入字符串格式不正确。
store.DatabaseCommands.UpdateByIndex("Movies/NewIndexName",
new IndexQuery
{
Query =
string.Format("Status:Released AND IsDeleted:false AND ReleaseDate:{* TO {0}}",
DateTools.DateToString(new DateTime(2012, 4, 3),
DateTools.Resolution.MILLISECOND))
},
new[]
{
new PatchRequest
{
Type = PatchCommandType.Modify,
Name = "Status",
Value = "TestingReleased"
}
}, allowStale: false);