C# 查询ID上的RavenDB索引时出现未索引错误,如何修复?

C# 查询ID上的RavenDB索引时出现未索引错误,如何修复?,c#,mapreduce,ravendb,C#,Mapreduce,Ravendb,我有一个RavenDB数据库和两个文档集合。我需要使用multi-map/reduce索引将这两个文档合并到一个业务实体中。如果不合并这两个集合,则业务实体不完整。你可能会争辩说,这表明我的域模型或数据模型被破坏了,但事实就是这样,我对此无能为力。那么,接下来的问题是:-) 基本上有三个文件: { // RootDocuments/1 "Foo" : "Bar", "Bar" : "Foo" } { // ExtraDocuments/1 "RootId" : "Roo

我有一个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();
session.Query().Where(d=>d.Id==Id.Single();
我得到以下错误:

System.ArgumentException:字段“\u文档\u id”未编制索引,无法查询未编制索引的字段


我可以强制RavenDB为Id字段编制索引吗?或者有其他方法来执行此查询吗?

如果您显示rootDocumentsByDindex的定义,这会有所帮助您找到解决方案了吗?我在这里也有同样的问题: