簡體   English   中英

MATCH查詢中的Neo4J數組

[英]Neo4J Arrays in MATCH query

我的查詢的目的是標記相似的單詞。

CREATE CONSTRAINT ON (n:Word) ASSERT n.title IS UNIQUE

MATCH (n) WHERE ID(n)={id} 
MERGE (o:Word{title:{title}}) 
WITH n,o MERGE n-[r:SIMILAR{location:'{location}'}]->o 
RETURN ID(o)

n是一個現有的單詞。 我想創建關系和其他單詞( o )(如果尚不存在)。

此查詢的問題是,它適用於一個標題,但是如果我使用帶有標題的數組,則單詞o的標題就是整個數組。

您能否建議我另一個執行相同的查詢和/或將多個值傳遞給標題的方法。

我正在使用Rails上的Neography寶石,例如REST API

要在參數數組中使用單個值,可以使用FOREACH ,例如

MATCH (n)
WHERE ID (n) = {id}
FOREACH (t IN {title} |
    MERGE (o:Word {title:t})
    MERGE n-[:SIMILAR]->o
)

如果您還希望將location作為參數傳遞(它實際上是當前查詢中的字符串文字),以便對參數數組中的每個title, location對進行n合並操作,則可以嘗試

FOREACH (map IN {maps} |
    MERGE (o:Word {title:map.title})
    MERGE n-[:SIMILAR {location:map.location}]->o
)

參數看起來像

{
    "maps": [
        {
            "title":"neography",
            "location":"1.."
        },{
            "title":"coreography",
            "location":"3.."
        }
    ]
}

其他建議:

  1. 通過參數中的內部ID查找節點通常不是很好。 在某些情況下,將查詢鏈接起來可能會很好,但是在大多數情況下,標簽索引查找會更好: MATCH (n:Word {title:"geography"})
  2. 如果您不使用交易密碼端點,請嘗試一下。 然后,您可以在一個事務中的每個調用中使用一個或多個查詢進行一個或多個調用。 性能提高了,您可能發現不需要發送更復雜的參數對象,但是可以發送許多簡單的查詢。

暫無
暫無

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

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