У меня есть база данных Raven, которая содержит коллекцию документов.Я хотел бы получить подмножество документов в этой коллекции.Только документы, отвечающие определенным критериям, будут получены.Однако для каждого извлеченного документа необходимо извлечь весь документ.
Рассмотрим следующий тип документа:
public class MyDocument {
public string Id { get; set; }
public string Name { get; set; }
public int Foo { get; set; }
public string Bar { get; set; }
}
Допустим, я хотел бы получить все документыгде свойство Foo больше заданного значения (неизвестно во время компиляции / создания индекса).Используя динамические индексы, это можно сделать так:
IList<MyDocument> FindMyDocuments(int minFooValue) {
using(IDocumentSession session = _store.OpenSession()) {
return session.Query<MyDocument>().Where(d => d.Foo > minFooValue).ToList();
}
}
Однако, насколько я понимаю, есть преимущества использования предопределенных индексов вместо динамических индексов.Поэтому я хотел бы заранее определить индекс для этой операции. Как будет выглядеть реализация AbstractIndexCreationTask ?
Кажется, что следующее не работает, так как Raven хочет, чтобы Map выбрала новый анонимный тип:
class MyDocumentIndex: AbstractIndexCreationTask<MyDocument, MyDocument> {
public MyDocumentIndex() {
Map = docs => from doc from docs
select doc;
}
}
А разве не должно быть и части «Уменьшить»?
Как вы, наверное, заметили, я довольно новичок в этой концепции карты / уменьшения: -).