2014-11-09 2 views
2

Neo4J v2.1.5를 사용하고 서버 플러그인을 만듭니다.Neo4j 서버 플러그인 기본 질문

  1. 고유 노드를 만드는 방법, 즉 속성의 고유성을 어떻게 보장합니까?
  2. 플러그인 수명주기에서 제약 조건 및 색인을 작성할 수있는 고리가 있습니까?
  3. 노드를 반환하면 전체 데이터베이스가 반환됩니다. 노드 또는 pojo 목록을 JSON으로 반환하려면 어떻게해야합니까? 대리인의 유효한 예 또는 설명이 있습니까?

저는 Cypher가 아닌 Java API를 사용하고 있습니다.

+0

아마 3 개의 개별 질문으로 나눌 수 있습니까? –

+0

# 2에는 META-INF/services/...를 통해 구현하고 등록 할 수있는 PluginLifeCycle이라는 인터페이스가 있으며 여기에는 start 및 stop과 같은 라이프 사이클 메소드가 있습니다. 예제를 보려면 https://github.com/AtomRain/neo4j-extensions/tree/master/neo4j-extensions-java –

+0

# 2 위의 프로젝트를 참조하십시오. org.neo4j.server.plugins.PluginLifecycle은 비어 있습니다. @MichaelHunger – Nishant

답변

2

고유 노드를 만드는 방법, 즉 속성의 고유성을 어떻게 보장합니까?

unique constraint은 해당 속성의 고유성을 보장하는 (레이블, 속성) 쌍에 만들 수 있습니다.

예컨대

CREATE UNIQUE CONSTRAINT ON :Person(name) 

같은 이름의 노드 2 개를 사용할 수 없도록하십시오. 당신이 자바 API에서 그렇게하려면 뭔가 like this을 할 거라고 :

try (Transaction tx = graphdb.beginTx()) 
{ 
    graphdb.schema() 
     .constraintFor(DynamicLabel.label("Person")) 
     .assertPropertyIsUnique("name") 
     .create(); 
    tx.success(); 
} 

플러그인 생명주기 내에서 제약 조건과 인덱스를 생성 할 수있는 후크가 있습니까?

트랜잭션에서는 가능하지만 IIRC에서는 트랜잭션 당 하나의 인덱스/제약 조건 만 만들 수 있습니다.

노드를 반환하면 전체 데이터베이스가 반환됩니다. 노드 또는 pojo 목록을 반환하려면 어떻게해야합니까? 대표자의 유효한 예 또는 설명이 있습니까?

사이퍼를 원하십니까? 당신에게 노드가에있는 속성의 맵을 반환합니다 사이퍼 땅에서

MATCH (n) 
RETURN n 
LIMIT 1 

: 하나 개의 노드를 반환하는 간단한 쿼리이 될 것입니다. 더 구체적인 것을 얻고 싶다면 다음을 시도해 볼 수 있습니다 :

MATCH (n:Person) 
RETURN n.name AS personName 
LIMIT 1 

그런 다음 결과 집합의 해당 열에 대해 문자열을 반환합니다.

- 당신을 돌려 줄 '노드'와 '관계'객체 것이다 당신의 자신의 순회를 쓸 수 있습니다 자바 API에서

- 자바 API에 대한 업데이트. 그에서 당신은 당신이 관심있는 어떤 특성을 추출해야 할 것이다. 사이퍼와

try (Transaction tx = graphDatabaseService.beginTx()) 
{ 
    ResourceIterable<Node> people = GlobalGraphOperations.at(graphDatabaseService).getAllNodesWithLabel(DynamicLabel.label("Person")); 

    for (Node node : people) 
    { 
     String name = (String) node.getProperty("name"); 
    } 

    tx.success(); 
} 
+0

자바 API를 사용하고 있습니다. # 1 동일한 속성에 고유 제약 조건 및 색인을 추가 할 수 있습니까? 예 : 신분증? 나는 현재 오류가 발생합니다. # 2 노드를 반환하면 Java API를 사용하여 전체 데이터베이스를 반환합니다. # 3 JSON 형식으로 응답을 반환하려면 어떻게해야합니까? – Nishant

+0

아니, 그럴 수 없어. 고유 제한 조건을 만들면 자동으로 인덱스가 만들어 지므로 둘 다 가질 필요가 없습니다. –

+0

노드를 반환하면 노드가 반환됩니다. 전체 데이터베이스를 반환한다는 것은 무엇을 의미합니까? 이것은 Neo4j의 JSON 형식으로 변환 된 클래스입니다 (https://github.com/neo4j/neo4j/blob/master/community/server/src/main/java/org/neo4j/server/rest/web/). RestfulGraphDatabase.java –

0

안녕 내가 당신에게 몇 가지 일을 sugesst 수

Q 어떻게의 고유 한 노드 즉, 보증 고유성을 만드는 방법 재산? Ans. 첫 번째 chosse는 해당 노드에 대해 고유 한 속성 일 수 있습니다. 관계형 데이터베이스 시스템의 기본 키와 같습니다. 즉 즉 노드를 만들기 위해 병합합니다. MERGE (u : User {Id : 1}) 집합 ID를 가진 사용자가 그것을 만들 것입니다 존재하지 않을 경우 u.Name = '찰리' RETURN U에게 는 다음 사용하여 SET 절 당신은뿐만 아니라, 노드를 반환

Q가를 반환 obejct 다른 속성 또는 구멍을 설정할 수 있습니다 완전한 데이터베이스. 노드 또는 pojo 목록을 JSON으로 반환하려면 어떻게해야합니까? 대리인의 유효한 예 또는 설명이 있습니까? Ans. 동일한 ID를 전달하고 검색하려고하면 같은 특정 노드 만 반환합니다 (예 : ) (u : 사용자 {Id : 1})이 (가)

을 생성하면 해당 ID를 생성합니다. 당신은 GUID를 C#, 과 같은 프로그램으로 만들었지 만 neo4j 3.x에서는 autoincremented propery도 사용했습니다.