嵌套集合条件下的 RavenDb DeleteByIndex

RavenDb DeleteByIndex on nested collection condition

假设我有如下架构:

Father { // Type: 1
   Id
}

Mother { // Type: 2
   Id
}
Child {
  Parents: [
    { ParentId, ParentType } // ParentType could be 1 or 2 acording to entity's type
  ]
}

我如何创建一个允许我们 DeleteByIndex 并接受 lucene 查询的索引,例如:"Parents,ParentId:xyz AND Parents,ParentType:2"?

当我尝试创建如下索引时:

Map = views => from view in views
  select new
  {
    view.ParentId,
    view.ParentType,
    view.Parents
  }

RavenDb 删除失败并表示 "Parents,ParentId" 尚未建立索引。 这样做的原因是我想删除所有 children 数据,因为它是 {Mother, Father} 之一的 child。

语法Parents,ParentId只适用于动态索引,使用静态索引,你定义的是字段名,你可以随意命名。

Map = views => from view in views
  from parent in view.Parents
  select new
  {
    parent .ParentId,
    parent .ParentType
  }

但是如果您的系统可以有很多父级,请查看有关扇出索引的文档。