2013-09-14 3 views
0

У меня есть база данных neo4j с двумя категориями отношений: CONTAINS и REFERENCES, которая определяется свойством RelationshipType в самой связи. Я пытаюсь найти узлы (которые по определению будут иметь отношение CONTAINS, входящее в него от своего родителя), но не отношения REFERENCES.Neo4J Найти Unreferenced Nodes

Мой запрос ниже.

START source=node(828) 
MATCH source-[contains]->target<-[references?]-reference 
WHERE contains.RelationshipType='CONTAINS' 
AND references.RelationshipType='REFERENCES' 
AND reference = null 
RETURN target.Id 
+0

Что ваш вопрос? –

+0

запрос не работает. Он не возвращает никаких записей, даже если есть узлы с являются частью отношения CONTAINS, но не являются частью каких-либо ССЫЛКИ. – Rich

+0

Можете ли вы настроить некоторые данные на console.neo4j.org и поделиться ссылкой. В правом верхнем углу находится кнопка общего доступа. –

ответ

0

Там нет ничего, что бы оба NULL и имеет свойство «RelationshipType», поэтому результат пуст.

Вы можете просто просто указать отношения «ссылка на нуле, как следует,

START source=node(828) 
MATCH source-[contains]->target<-[references?]-reference 
WHERE contains.RelationshipType='CONTAINS' AND reference = null 
RETURN target.Id 

В том случае, когда„мишень“может иметь другие, чем входящие отношения„Ссылка“, вы можете указать, что ни один из входящие отношения к «цели» должны быть типа недвижимости «ссылка»,

START source=node(828) 
MATCH source-[contains]->target, path=target<-[references?]-reference 
WHERE contains.RelationshipType='CONTAINS' AND NONE (r in relationships(path) where r.RelationshipType='REFERENCES') 
RETURN target.Id 
+0

Это выглядит многообещающим, и на самом деле немного более читаемым. Я не знал о синтаксисе Cypher. Я сделаю это. – Rich