我是RavenDB的新手。我正在尝试在RavenDB中创建一个multimapindex,下面是其中一个地图:
this.AddMap<ProposedData>(proposedDatas =>
from psd in proposedDatas
let pgds = psd.PropertyGroupValues.Select(pgv => this.LoadDocument<PropertyGroupDefinition>($"PropertyGroupDefinitions/{pgv.DefinitionId}"))
let propertyDefs = pgds.SelectMany(pgd => pgd.PropertyDefinitions)
let propertyVals = psd.PropertyGroupValues.SelectMany(pgv => pgv.PropertyValues.SelectMany(pv => propertyDefs.Where(pd => pd.Id == pv.DefinitionId).Select(pd => new { Value = this.AsDocument(pv).Value<object>("Value"), TagName = pd.TagName })))
from property in propertyVals
select new Result
{
Id = psd.Id.ToString().Replace("ProposedDatas/", ""),
HasApprovedVersion = false,
Value = property.Value,
TagName = property.TagName
});
它确实创建了索引,但不包含所有Value和TagName。但是当我使用
时Value = propertyVals.Select(pv => pv.TagName),
相反,它有我正在寻找的完整TagName列表。我正在使用RavenDB v3。如果我做错了,请告诉我。
以下是我的结果结构:
public class Result
{
public bool HasApprovedVersion { get; set; }
public string Id { get; set; }
public object Value { get; set; }
public string TagName { get; set; }
}
P.S我试图使用join,但是有一个例外。
感谢。
答案 0 :(得分:0)
不建议写两个froms,但它是受支持的。可能的问题是索引的复杂性,因为我们正试图重建你在另一方面的含义。 通常,最好避免使用扇出并且每个文档只有一个条目。