У меня есть база данных RavenDB с двумя коллекциями документов. Мне нужно объединить документы из этих двух документов в одну бизнес-единицу, используя мультикарту / сокращение индекса. Бизнес-сущность не завершена, если я не объединю две коллекции. Вы, вероятно, могли бы утверждать, что это указывает на то, что моя модель предметной области или модель данных повреждена, но это то, что есть, и я ничего не могу с этим поделать. Итак, по вопросу: -).
В основном три документа:
{ // 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.
}
Поскольку мне всегда нужно объединять две коллекции с моим индексом мультикарты, даже для получения объекта на основе идентификатора необходимо выполнять запрос с использованием индекса. Когда я делаю запрос, похожий на
session.Query<RootDocumentsByIdIndex.Result, RootDocumentsByIdIndex>().Where(d => d.Id == id).Single();
Я получаю следующую ошибку:
System.ArgumentException: поле '__document_id' не проиндексировано, не может запрашивать поля, которые не проиндексированы
Могу ли я заставить RavenDB индексировать поле Id? Или есть другой способ сделать этот запрос?