1

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

非常感谢!

4

2 回答 2

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))
}
于 2013-08-07T19:31:40.073 回答
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
   };
于 2013-08-07T16:45:01.867 回答