RavenDB и рекурсивные включения - PullRequest
0 голосов
/ 30 мая 2018

У меня есть структура

class Node {
    List<string> ChildrenIds;
    ...
}

, которую я в настоящее время храню и ищу в RavenDB, но «Включить для результатов» позволяет мне включать только один уровень в потенциально многоуровневом дереве.Есть ли способ заставить его рекурсивно искать все эти узлы, на которые есть ссылки с верхнего уровня?

Я знаю, что индексы можно использовать рекурсивно, но я не знал, как лучше использовать это для загрузки правильных документов., можно ли как-то сделать свойство Include для индекса?

1 Ответ

0 голосов
/ 05 июня 2018

Да, вы используете поддержку JS в запросе, например:

declare function recursiveInclude(n){
    for(var i = 0; i<n.ChildrenIds.length; i++)
        recursiveInclude(load(n.ChildrenIds[i]));
    return n;
}
from Node as n
select recursiveInclude(n)
...