Как создать индекс RavenDB, который возвращает список строк?

У меня есть коллекция документов «WineDocument» в форме:

{
  "Name": "Barbicato Morellino Di Scansano",
  "Country": "Italy",
  "Region": "Tuscany",
}

Мне нужно сделать запрос, чтобы найти все уникальные значения поля «Страна» . Я пытался создать индекс, который выглядел бы примерно так:

class WineCountriesIndex: AbstractIndexCreationTask<WineDocument, string> {
        public BeverageCountriesIndex() {
            Map = wines => from wine in wines
                           where wine.Country != null
                           select new { Key = wine.Country };
            Reduce = results => from result in results
                                group result by result into g
                                select new { Key = g.Key };
        }
    }

Индекс создается нормально, и я пытаюсь использовать его со следующим кодом:

IList<string> countries = session.Query<string, WineCountriesIndex>().ToList();

Но это дает исключение JsonSerializationException: «Невозможно десериализовать объект JSON в тип 'System. Нить'.". Я предполагаю, что это потому, что парсер Json не может проанализировать {Key = "Italy} в строке. Но я не знаю, как сделать так, чтобы карта / сокращение возвращала только строку.

5
задан David Nordvall 9 December 2011 в 22:40
поделиться