2017-02-09 1 views
1

Вот заявление, которое я посылаю через завиток:Neo4j узлы обнаруживаются при переменной «п», когда я обеспечиваю конкретные переменные в завиток

{ 
    "statements" :[ 
     { 
      "statement": "CREATE (matrix1:Movie { title : 'The Matrix', year : '1999-03-31' }) CREATE (matrix2:Movie { title : 'The Matrix Reloaded', year : '2003-05-07' }) CREATE (matrix3:Movie { title : 'The Matrix Revolutions', year : '2003-10-27' }) CREATE (keanu:Actor { name:'Keanu Reeves' }) CREATE (laurence:Actor { name:'Laurence Fishburne' }) CREATE (carrieanne:Actor { name:'Carrie-Anne Moss' }) CREATE (keanu)-[:ACTED_IN { role : 'Neo' }]->(matrix1) CREATE (keanu)-[:ACTED_IN { role : 'Neo' }]->(matrix2) CREATE (keanu)-[:ACTED_IN { role : 'Neo' }]->(matrix3) CREATE (laurence)-[:ACTED_IN { role : 'Morpheus' }]->(matrix1) CREATE (laurence)-[:ACTED_IN { role : 'Morpheus' }]->(matrix2) CREATE (laurence)-[:ACTED_IN { role : 'Morpheus' }]->(matrix3) CREATE (carrieanne)-[:ACTED_IN { role : 'Trinity' }]->(matrix1) CREATE (carrieanne)-[:ACTED_IN { role : 'Trinity' }]->(matrix2) CREATE (carrieanne)-[:ACTED_IN { role : 'Trinity' }]->(matrix3)" 
     } 
    ] 
} 

Как вы можете видеть, я предоставил уникальный переменные или идентификаторы, но как только они отправляются в neo4j, все они отображаются под некоторой переменной «n». Это затрудняет мне манипулирование и работу с данными в neo4j.

Любая помощь будет высоко оценена.

EDIT: вот пример запроса, чтобы найти всех актеров, которые действовали в John Wick.

EDIT 2: Позвольте мне подробно остановиться на том, что я сделал до сих пор.

В curl я отправил вышеприведенную команду, чтобы сгенерировать все узлы и отношения для матрицы.

После этого, что я хожу в Neo4j и посмотреть на то, что было отправлено и табличный формат показан ниже:

neo4J screenshot

Вы увидите, что каждый узел попадает под переменную n.

+0

Если мой ответ не является удовлетворительным, вы можете привести пример запроса, который сложен для вас, чтобы работать? Это похоже на непонимание того, какие переменные и как они используются в Neo4j. – InverseFalcon

+0

Обновлено, это моя первая неделя с использованием Neo4j, поэтому может возникнуть недоразумение. – madsthaks

ответ

0

Вы имеете в виду переменные, такие как matrix1 и keanu?

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

Когда вы говорите о переменной n, это, вероятно, новая переменная, введенная в запросе для сопоставления данных в базе данных. Опять же, переменные, которые вы вводите, доступны только в пределах запросов. Если вам не нравится использовать n, используйте другую переменную.

EDIT

Давайте посмотрим на этот пример запроса:

match (n:Actor)-[:ACTED_IN]->(n:Movie {title:'John Wick'}) 
return n.name 

Проблема с этим является вы ввели переменную n, но вы используете его для обоих: Актер и: Фильм в матче, поэтому он не будет работать (маловероятно, что вы используете узел, который обозначается как: Актер и: Фильм с названием «Джон Вик» и имеет отношение: ACTED_IN к себе) ,

Вам нужно будет использовать разные переменные для разных узлов в ваших матчах. Просто используя m для переменной на: Movie node будет достаточно, чтобы сделать эту работу.

И если n и m слишком краткие для вас, использовать различные переменные:

match (actor:Actor)-[:ACTED_IN]->(johnwick:Movie {title:'John Wick'}) 
return actor.name 
+0

Да, это переменные, о которых я говорю. это то, что я никогда не вводил переменную 'n', я не уверен, откуда она взялась, она должна быть значением переменной по умолчанию. Это вызывает у меня проблемы, так как у меня есть ** Актеры ** и ** Фильмы ** в моем наборе данных, и я не могу правильно запросить набор данных, так как они имеют одинаковое имя переменной. – madsthaks

+0

Вы контролируете, какие переменные вы используете в своем запросе. Я обновил свой ответ соответственно. – InverseFalcon

+0

Что касается вашего второго редактирования с помощью 'MATCH (n) RETURN n LIMIT 25', то это то, что он задает: сопоставлять все узлы моей базы данных и связывать их с переменной' n' (это похоже на псевдоним столбца) затем возвратите 25 из них. Они появятся под столбцом, названным переменной, которую вы использовали для сопоставления, в данном случае, 'n'. – InverseFalcon