-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。
我看着多图索引和他们做的是建立在它所有的映射实体的指标,他们不合并他们在一起。 –
然后,您可以使用减少将它们组合在一起 –
如何?我无法编写将两个文档关联在一起的缩减功能。 –