0

我正在尝试使用 RavenDB 获取 MVC 应用程序的所有剧院名称列表。所以我希望从 ravendb 文档中的嵌套对象中获取剧院名称列表...

示例 RavenDB 文档:

{
    "City": "NY",

    "Theaters": [
        {
            "TheaterName": "TheaterA",
            "TheaterId": "Theater/1693",
            "Description": ""               
        },
        {
            "TheaterName": "TheaterB",
            "TheaterId": "Theater/16393",
            "Description": ""               
        }
    ]
}

索引(GetCityTheatersIndex):

docs.CityTheaters
    .Select(doc => new {Theaters = doc.Theaters, City= doc.City})

代码:

 var query =  

 session.Advanced.LuceneQuery<CityTheaters>("CityTheaters/GetCityTheatersIndex");

如何操作上面的变量“查询”.. 以获取仅包含 TheatreNames 的列表.. 现在上面的代码让我获得了变量“查询”中的整个文档.. 我需要能够解析出“剧院名称”在嵌套对象中并填充到列表中.. 感谢您的帮助。

我尝试过类似的东西..

query.ElementAt(1).. 但这并没有让我到任何地方。

4

1 回答 1

3

您可以使用带有字段存储的地图索引来执行此操作:

public class CityTheaters : AbstractIndexCreationTask<City>
{
    public class Result
    {
        public string Name { get; set; }
    }

    public CityTheaters()
    {
        Map = cities => from city in cities
                        from theater in city.Theaters
                        select new
                        {
                            theater.Name
                        };

        Store(x => x.Name, FieldStorage.Yes);
    }
}

稍后,您可以这样查询:

var results = session.Query<City, CityTheaters>()
    .AsProjection<CityTheaters.Result>()
    .ToList();
于 2012-05-03T20:02:39.450 回答