OrientDB: Найти все вершины, которые не имеют прямой соседней вершины данного класса - PullRequest
6 голосов
/ 14 января 2012

Используя язык запросов OrientDB, как найти все вершины в кластере a, у которых нет исходящего ребра, заканчивающегося вершиной класса b (т. Е. Нет прямой соседней вершины класса b)?Не имеет значения, имеют ли они другие исходящие ребра.

1 Ответ

3 голосов
/ 14 января 2012

Если у вас есть класс А, сопоставленный с кластером А, вы можете сделать:

select from A where not( out.in.@class in ['b'] )

Это означает пересечение свойства "out" записей A (как ребер), а затем свойство "in" (вершина), а затем получить имя класса (@class).Я использовал оператор IN вместо = (равно), потому что out.in. @ class возвращает коллекцию имен классов.

Если вы хотите, чтобы у вас не было класса A, и вам нужно пройти через кластерКластер использования: синтаксис:

 select from cluster:A where not( out.in.@class in ['b'] )

Я протестировал последнюю версию 1.0rc8-SNAPSHOT и работает.

...