在没有索引错误的情况下查询ID的RavenDB索引,如何解决?

时间:2011-12-22 06:39:24

标签: c# mapreduce ravendb

我有一个带有两个文档集的RavenDB数据库。我需要使用multi map / reduce索引将这两个文档合并到一个业务实体中。如果我不合并这两个集合,则业务实体不完整。您可能会争辩说这表明我的域模型或数据模型已被破坏,但它就是它,并且我无法做任何事情。所以,提出问题: - )。

基本上是三个文件:

{ // RootDocuments/1
    "Foo" : "Bar",
    "Bar" : "Foo"
}

{ // ExtraDocuments/1
    "RootId" : "RootDocuments/1",
    "Value" : 2
}

{ // ExtraDocuments/2
    "RootId" : "RootDocuments/1",
    "Value" : 3
}

由索引组合成以下内容:

{
    "Id" : "RootDocuments/1",
    "Foo" : "Bar",
    "Bar" : "Foo",
    "Value" : 5 // The sum of values from the extra documents.
}

由于我总是需要将两个集合与我的多映射索引相结合,因此即使基于ID检索实体也需要使用索引进行查询。当我查询时看起来像

session.Query<RootDocumentsByIdIndex.Result, RootDocumentsByIdIndex>().Where(d => d.Id == id).Single();

我收到以下错误:

  

System.ArgumentException:字段'__document_id'未编入索引,无法查询未编入索引的字段

我可以强制RavenDB索引Id字段吗?或者有另一种方法来进行此查询吗?

0 个答案:

没有答案