2013-10-11 5 views
0

в этом случае IAM не имея номер дома в качестве узлов и я хочу, чтобы перебирать их и передать их в качестве параметра для создания отношений между людьми и дома Нет здесь есть код ..узлов перебора в шифровальщика запроса Neo4j

START n=node(*) 
WHERE 
    HAS(n.house_no) 
RETURN n; 

из сказанного выше я не получит дом нет-х узлов, а затем я хочу, чтобы передать их в другой запрос

START 
    n=node:node_auto_index(house_no="4-10"), 
    n2=node:node_auto_index(houseNo="4-10") 
WHERE 
    HAS(n.house_no) AND HAS(n2.houseNo) AND n.house_no = n2.houseNo 
    create UNIQUE 
    (n2)-[:LIVESIN]->(n) 
    return n2.name 

в приведенном выше запросе я хочу, чтобы передать дом не экс узлы собственности: house_no

Почему я перебираю узлы и передаю свойство в нем как параметр. есть ли возможность объединить оба эти запроса?

Может ли кто-нибудь мне помочь?

ответ

2

Вы можете передать параметры для индекса-поиска в предложении запуска, как это:

START 
    n =node:node_auto_index(house_no={house_no}), 
    n2=node:node_auto_index(houseNo={house_no}) 
WHERE 
    HAS(n.house_no) AND HAS(n2.house_no) AND n.house_no = n2.houseNo 
CREATE UNIQUE 
    (n2)-[:LIVESIN]->(n) 
RETURN n2.name 

and then pass a map like 


{house_no:"4-10"} 
2

Чтобы комбинировать свои запросы, вы можете использовать WITH. Из documentation:

В Cypher, положение WITH используется для трубы результата от одного запроса к next.`

Я никогда не пытался делать поиск по индексу на основе «конвейер результатов» , это будет работать:

START n=node(*) 
WHERE HAS(n.house_no) 
WITH n.house_no as house_no 
START n2=node:node_auto_index(houseNo=house_no) 
CREATE UNIQUE n2-[:LIVESIN]->n 
RETURN n2.name 
+0

спасибо за ответ .. но его ошибка бросания как .. строковый литерал или ожидаемый параметр "START n2 = node: node_auto_index (houseNo = house_No)" – sakar

Смежные вопросы