C# RavenDB综合指数

C# RavenDB综合指数,c#,.net,ravendb,C#,.net,Ravendb,我正在尝试使用RavenDB创建一个复合索引。基本上,我有两个模型,我需要“加入”,并能够执行搜索结果 以下是我的模型示例: 模式1: public class UserProfile { public string ProfileId { get; set } public string FirstName { get; set } public string LastName { get; set } public string EmailAddress {

我正在尝试使用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 }
}
UserProjectId
属性如下:
users//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
        };
}
公共类ProfileProjectIndex:AbstractIndexCreationTask{
Map=profiles=>
从配置文件中的配置文件
选择新的{
profile.ProfileId,
profile.FirstName,
profile.LastName,
profile.EmailAddress
};
TransformResults=(数据库,结果)=>
从结果到结果
让project=db.Load(“users/”+profile.EmailAddress+“/projects”)
选择新的{
result.ProfileId,
result.EmailAddress,
result.FirstName,
result.LastName,
project.userprojectd,
项目,项目
};
}
现在,当从web界面查询Raven时,此索引返回我可能需要的完整数据列表,但我需要能够根据
UserProjects.Projects
列表中包含的一些值筛选结果,例如:

Project.projects.Contains(x=>x.projectd==“projects/1234”)时,返回所有与项目关联的用户配置文件。


任何乌鸦大师都能启发我吗?哦,我正在使用RavenDB 2.5。

您可能正在查看多地图索引,请参见:


我研究了多映射索引,它们所做的只是创建一个包含所有映射实体的索引,而不是将它们组合在一起。然后可以使用reduce将它们组合在一起。如何?我无法编写将两个文档关联在一起的reduce函数。
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
        };
}