2017-03-02 65 views
0

假設我有一個架構如下:RavenDb DeleteByIndex嵌套收集條件

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的查詢,如:「父母的ParentId:XYZ和家長,ParentType的:2" ?

當我試圖創建如下指標:

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

RavenDb無法刪除,並說:「父母,的ParentId」尚未編入索引。 這樣做的原因是我想刪除所有兒童數據,當它是{Mother,Father}之一的孩子時。

回答

2

語法Parents,ParentId僅適用於動態索引,使用靜態索引,您正在定義字段名稱,並且可以根據需要命名它們。

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

但檢查文檔關於如果您的系統可以有許多父母的fanout索引。