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 に答える