2016-02-19 79 views
-1

我試圖用RavenDB創建一個複合索引。基本上,我有2個模型,我需要「加入」,並能夠對結果執行搜索。RavenDB的複合索引

這裏是我的模型的例子:

模型1:

public class UserProfile { 
    public string ProfileId { get; set } 
    public string FirstName { get; set } 
    public string LastName { get; set } 
    public string EmailAddress { get; set } 
} 

模型2:

public class UserProjects { 
    public string UserProjectId { get; set } 
    public List<Project> Projects { get; set } 
} 

這裏的項目模型,如果你想知道:

public class Project { 
    public string ProjectId { get; set; } 
    public string Name { get; set; } 
} 

UserProjectId財產如下:users/<Email Address>/projects

我能夠創建一個返回所有字段的索引,但我無法搜索某些字段。

這裏是我的指標:

public class ProfileProjectIndex : AbstractIndexCreationTask<UserProfile> { 
    Map = profiles => 
     from profile in profiles 
     select new { 
      profile.ProfileId, 
      profile.FirstName, 
      profile.LastName, 
      profile.EmailAddress 
     }; 

    TransformResults = (db, results) => 
     from result in results 
     let project = db.Load<UserProjects>("users/" + profile.EmailAddress + "/projects") 
     select new { 
      result.ProfileId, 
      result.EmailAddress, 
      result.FirstName, 
      result.LastName, 
      project.UserProjectId, 
      project.Projects 
     }; 
} 

現在這個指數,從Web界面查詢烏鴉時,返回的數據我能想到的完整列表,但我需要能夠基於一些過濾結果列入名單UserProjects.Projects值,例如:

回報與相關項目的所有用戶配置文件時Project.Projects.Contains(x => x.ProjectId == "projects/1234")

任何RavenDB大師能告訴我嗎?哦,我正在使用RavenDB 2.5。

回答

0
+0

我看着多圖索引和他們做的是建立在它所有的映射實體的指標,他們不合並他們在一起。 –

+0

然後,您可以使用減少將它們組合在一起 –

+0

如何?我無法編寫將兩個文檔關聯在一起的縮減功能。 –