我有一个带有两个文档集的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字段吗?或者有另一种方法来进行此查询吗?