2017-11-17 1 views
0

같은 브랜드이지만 다른 카테고리의 제품을 찾고 싶습니다. 그런 다음 ID를 반환하십시오.Neo4j 그래프 클라이언트 쿼리에서 노드 매개 변수를 반환하십시오.

내 데이터베이스에는 현재 Item, Brand, Category 노드가 있습니다.

관계 : IN_CATEGORY, FROM_BRAND.

항목의 속성은 id, brand 및 category입니다.

나는 올바른 결과

MATCH (i1:Item {Id:"5"})-[r1:FROM_BRAND]->(b:Brand)<-[r2:FROM_BRAND]-(i2:Item) 
WHERE i1.category <> i2.category 
RETURN i2.Id 

이 범주 속성을 사용하지 않는 대신 IN_CATEGORY 관계를 사용할 수있는 경우 나도 몰라를 반환이 쿼리를 만들었습니다.

이제 Neo4j 그래프 클라이언트를 사용하여 쿼리를 수행하고 싶습니다. 지금까지

내가 여기까지 온 :

public IEnumerable<string> GetIds(string itemId){ 
    var query = _client.Cypher 
    .Match("(i1: Item)-[r:FROM_BRAND]->(b:Brand)<-[rr:FROM_BRAND]-(i2:Item)") 
    .Where((Item i1) => i1.id == itemId) 
    .AndWhere((Item i1, Item i2) => v1.category != i2.category) 
    .Return(i2 => i2.As<Item>()); 

    return query.Results; 
} 

그것의 올바른 항목을 반환 것으로 보인다. 하지만 전체 항목이 아닌 항목 ID를 반환하고 싶습니다.

답변

0

나는

var query = _client.Cypher 
    .Match("(i1: Item)-[r:FROM_BRAND]->(b:Brand)<-[rr:FROM_BRAND]-(i2:Item)") 
    .Where((Item i1) => i1.id == itemId) 
    .AndWhere((Item i1, Item i2) => i1.category != i2.category) 
    .With("i2.id AS iId") 
    .Return(iId => iId.As<string>()); 

    return query.Results; 
함께 사용하여 고정
관련 문제