2017-02-22 30 views
0

Я хотел бы использовать шифр, чтобы вернуть что-то вид:сочетающих свойств в шифровальщике

{ 
    name: 'Name of Parent Node', 
    property1 : 'some property of parent node', 
    property2 : 'some other property' 
    children: [...some array of children...] 
} 

До сих пор я сделал ниже:

MATCH (p:Parent)-[:SOME_RELATIONSHIP]->(c:Child) 
WITH collect(c) as children, p 
RETURN {properties: properties(p), children: children} 

Что вроде похоже на то, Я хочу, но не совсем. Есть ли способ объединить или объединить его, чтобы я получил свойства вместе?

ответ

4

В Neo4j 3.1+ вы также можете использовать картографические проекции (а-ля GraphQL)

MATCH (p:Parent)-[:SOME_RELATIONSHIP]->(c:Child) 
RETURN p {.property1, .property2, children: collect(c)} AS info 

Вы также можете выбрать только пару свойства из дочерних узлов:

MATCH (p:Parent)-[:SOME_RELATIONSHIP]->(c:Child) 
RETURN p {.property1, .property2, 
      children: collect(c {.cprop1, .cprop2}) 
     } AS info 

https://neo4j.com/blog/cypher-graphql-neo4j-3-1-preview/

+0

Есть ли способ сделать это без однозначного ввода каждого имени свойства? –

+0

Вы хотите ВСЕ свойства? –

+0

А я вижу '. *' Спасибо! примет ваш ответ –

0

Если вы всегда возвращают одинаковые свойства от родительского узла

MATCH (p:Parent)-[:SOME_RELATIONSHIP]->(c:Children) 
WITH collect(c) as children,p 
return p.name as name,p.firstproperty,p.secondproperty,children 
+0

Есть ли способ сделать это без однозначного ввода каждого имени свойства? –