-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。
我看着多圖索引和他們做的是建立在它所有的映射實體的指標,他們不合並他們在一起。 –
然後,您可以使用減少將它們組合在一起 –
如何?我無法編寫將兩個文檔關聯在一起的縮減功能。 –