将集合展平为RavenDB中文档的属性

时间:2013-08-07 13:07:56

标签: ravendb

我在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中是否可行?

非常感谢!

2 个答案:

答案 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
   };