RavenDb - Рекурсивные запросы / индексы для иерархического документа - PullRequest
4 голосов
/ 17 декабря 2010

Я знаю, что это может быть немного глупым вопросом, возможно, я поступаю неправильно, но я спрошу в любом случае.

Допустим, у меня есть набор иерархических документов.Единственная информация, которую они содержат об их месте в иерархии, это их родительский идентификатор.Если он нулевой, мы достигли вершины.

Получение родителей и детей - самая легкая часть.

Что я хочу сделать, так это запросить всех потомков и предков.Я думаю, что я должен разделить этот вопрос.1) Получить предков к документу - это какой-нибудь способ сделать рекурсивный запрос?Получите родительский родитель, пока родительский не нуль.

2) Есть ли у них какой-либо способ сделать индекс / проекцию, где мы можем сопоставить идентификаторы предков с документом.А затем запросить идентификатор предка или идентификатор документа?Потому что, если бы я мог получить этот индекс, было бы легко сказать, получить все документы по идентификатору предка для идентификатора документа, равного документу, от которого я хочу получить детей.

Допустим, у меня есть эта структура.

Документ 1
Документ 1.1
Документ 1.1.1
Документ 1.1.2
Документ 1.2
Документ 1.2.1

Я хочу, чтобы индекс смотрелчто-то вроде этого

DocumentID
1.1
1.1.1
1.1.1
1.1.2
1.1.2
1.2
1.2.1
1.2.1

AncestorID 1
1
1.1
1
1.1
1
1.2

1 Ответ

3 голосов
/ 11 августа 2011

Это подробно обсуждалось в списке рассылки RavenDB: https://groups.google.com/d/topic/ravendb/ptBYL9A5PA8/discussion

Я полагаю, что выбранное решение подразумевало полное происхождение каждого документа.

...