嵌套集合条件下的 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
}
但是如果您的系统可以有很多父级,请查看有关扇出索引的文档。
假设我有如下架构:
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
}
但是如果您的系统可以有很多父级,请查看有关扇出索引的文档。