我有一个包含文档集合的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 <MyDocument,MyDocument>的实现如何?
以下似乎不起作用,因为Raven希望Map选择一个新的匿名类型:
class MyDocumentIndex: AbstractIndexCreationTask<MyDocument, MyDocument> {
public MyDocumentIndex() {
Map = docs => from doc from docs
select doc;
}
}
并且不应该有Reduce部分吗?
你可能已经注意到了,我对这个Map / Reduce概念很新:-) .
1 回答
大卫,你这样做:
然后你用以下方法查询它: