2012-08-29 3 views
3

배열 속성이있는 Neo4J 노드가있는 경우 배열 리터럴과 일치하는 노드 만 반환하도록 Cypher 쿼리를 만드는 방법은 무엇입니까? 나는 "목록"이라는 배열 속성을 가진 노드를 만든 콘솔을 사용하여Neo4j Cypher : WHERE 절의 노드 특성에 정확히 일치하는 항목 찾기

:

neo4j-sh (0)$ create n = {list: [1,2,3]}; 
==> +-------------------+ 
==> | No data returned. | 
==> +-------------------+ 
==> Nodes created: 1 
==> Properties set: 1 
==> 83 ms 

neo4j-sh (0)$ start n=node(1) return n; 
==> +-----------------------+ 
==> | n      | 
==> +-----------------------+ 
==> | Node[1]{list:[1,2,3]} | 
==> +-----------------------+ 
==> 1 row 
==> 1 ms 

그러나, 노드를 반환하지 않습니다 내 쿼리는 단지 배열 리터럴 일치하는 WHERE 절을 부여 만들어 졌는지 :

neo4j-sh (0)$ start n=node(1) where n.list=[1,2,3] return n; 
==> +---+ 
==> | n | 
==> +---+ 
==> +---+ 
==> 0 row 
==> 0 ms 

나는 Cypher를 잘못 사용하고 있습니다. Cypher에서 정확한 배열 속성 일치를 수행하는 데 도움이 될만한 정보가 있습니다.

답변

4

콘솔에는 항상 Neoj4의 최신 SNAPSHOT 빌드가 실행됩니다. 버전은 Cypher Syntax 구문을 참조합니다.

이제 Cypher에서 Array 처리와 관련된 수정이있었습니다 (https://github.com/neo4j/community/pull/815https://github.com/neo4j/community/issues/818 참조). 콘솔 작업을 수행 할 가능성이 높습니다. . 이것은 1.8.M07 이후에 병합되었습니다. 따라서 로컬에서 작업하려면 최신 1.8.-SNAPSHOT 중 하나를 다운로드하거나 GITHUB에서 빌드하거나 1.8.M08을 기다려야합니다. 곧 완료 될 예정입니다.

/피터

+0

1.8.RC1이 문제를 해결했음을 확인했습니다. 감사! –

3

사용중인 Neo4j 버전은 무엇입니까?

동일한 코드가 1.8M07에서 작동합니다.

http://console.neo4j.org/?id=p9cy6l

업데이트 : 나는 웹 클라이언트를 통해 설치 로컬에서 (어떤 결과) 동일한 결과를 얻을 수 없습니다. 어쩌면 웹 클라이언트 문제일까요?

+0

내가 내 질문에 보여 주었다 결과는 로컬로 실행중인 서버와 웹 클라이언트와 Neo4j 커뮤니티 1.8M07에서 얻었다. 귀하의 링크에서 예상되는 결과를 얻는 쿼리가 나타납니다. console.neo4j.org가 1.8M07을 실행 중임을 어떻게 알 수 있습니까? –

+1

그건 당황 스럽네. console.neo4j.org의 버전은 current로 레이블이 붙어 있는데, 나는 M07을 의미한다고 생각했다. 또한 콘솔 앱에서 "1.8"및 "1.7"(1.6이 아님)에서도 작동합니다. 내 로컬 1.8M06 및 1.8M07 시도하고 동일한 결과를 얻을 ... 어쩌면 더 친숙한 사람이 안으로 전화를 걸 것이다. –

+0

그리고 Clover 내 Cloher에서 로컬 서버에 대해 Cypher를 실행하는 동일한 결과를 얻을 수 있으므로 다소 배제됩니다. 웹 클라이언트 문제 (REST를 사용하는 경우도 있음). 웹 앱에서 작동한다는 것은 매우 이상한 일이며 Cypher의 배열 리터럴에 대한 설명서도 찾을 수 없습니다. –