簡體   English   中英

cypher (neo4j) 中的條件檢查

[英]Condition checking in cypher (neo4j)

我運行以下代碼。 如果它與我的“u”節點存在關系,我想從 USER_PHONE 節點獲取“電話”屬性。 但我無法分配變量來獲取它。 如果我將第一行修改為: (phone)<--(u:USER)-[:friend]-(p:USER)-[i:interested_in]->(p0:INTEREST{name:'Tiếng Anh'}) . 然后對滿足條件 if ( (u)-->(:USER_PHONE) ) 的節點重復返回結果兩次。 有人能幫我嗎?

    match (u:USER)-[:friend]-(p:USER)-[i:interested_in]->(p0:INTEREST{name:'Tiếng Anh'})
    return id(u), u.FB_ID, sum(toInteger(i.strength)*p.ai_pagerank2) as CII, 
    CASE u
      WHEN (u)-->(phone:USER_PHONE) THEN phone.phone
      ELSE NULL
    END as num_phone order by num_phone ASC limit 100

這是我得到的錯誤

PatternExpressions are not allowed to introduce new variables: 'phone'. (line 4, column 15 (offset: 183))
    "  WHEN (u)-->(phone:USER_PHONE) THEN phone.phone"

這是我得到的錯誤

你可以做“可選匹配”。 這是有關它的文檔: https://neo4j.com/docs/cypher-manual/current/clauses/optional-match/

match (u:USER)-[:friend]-(p:USER)-[i:interested_in]->(p0:INTEREST{name:'Tiếng Anh'})
with u, i, p
optional match (u)-->(userPhone:USER_PHONE)
return id(u), u.FB_ID, sum(toInteger(i.strength)*p.ai_pagerank2) as CII, 
userPhone.phone as num_phone order by num_phone ASC limit 100

如果 null,則無需檢查電話,因為如果電話號碼不存在,它將返回 null。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM