RavenDb嵌套收集条件下的DeleteByIndex

时间:2017-03-02 12:39:23

标签: ravendb

假设我有一个如下架构:

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”尚未编入索引。 这样做的原因是我想删除所有儿童数据,因为它是{Mother,Father}之一的孩子。

1 个答案:

答案 0 :(得分:2)

语法Parents,ParentId仅适用于动态索引,使用静态索引,您正在定义字段名称,您可以根据需要为它们命名。

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

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