我正在尝试使用RavenDB创建一个复合索引。基本上,我有2个模型,我需要“加入”并能够对结果进行搜索。
以下是我的模型示例:
模型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界面查询Raven时,此索引会返回我想要的完整数据列表,但我需要能够根据UserProjects.Projects
列表中包含的某些值过滤结果,例如:
在Project.Projects.Contains(x => x.ProjectId == "projects/1234")
任何RavenDB大师都可以启发我吗?哦,我正在使用RavenDB 2.5。
答案 0 :(得分:0)