我在RavenDB中有一些带有属性集合的文档,我想用索引来展平。
文档结构类似于:
{
"Id": "test/1",
"Name": "Some name",
"Attributes": [
{ "Key": "FirstAttr", "Value": "FirstValue" },
{ "Key": "SecondAttr", "Value": "SecondValue" }
]}
我想要的输出是:
{
"Id": "test/1",
"Name": "Some name",
"FirstAttr": "FirstValue",
"SecondAttr": "SecondValue"
}
这在RavenDB中是否可行?
非常感谢!
答案 0 :(得分:1)
好的 - 回答我自己的问题,以便其他人可以受益:
CreateField
方法似乎是我索引中地图部分所需要的:
from t in docs.Test
select new {
t.Id,
t.Name,
_ = t.Attributes.Select(x => this.CreateField(x.Key, x.Value, true, true))
}
答案 1 :(得分:0)
你能在map-reduce期间这样做吗?
Map = docs =>
from doc in docs
select new {
Id = doc.Id,
Name = doc.Name,
FirstAttr = (doc.Attributes.ContainsKey("FirstAttr") ? doc.Attributes["FirstAttr"] : null,
SecondAttr = (doc.Attributes.ContainsKey("SecondAttr") ? doc.Attributes["SecondAttr"] : null
};