2015-11-03 73 views
0

根據我如何檢索我的節點,getRelationships方法將返回所有關係(預期)或無關係(錯誤)。getRelationships並不總是返回關係

Neo4j版本2.2.6。使用Java API。

:schema 

Indexes 
    ON :Lot(lot_id) ONLINE 
    ON :Lot(system) ONLINE 

No constraints 

lot_id始終是唯一的。
系統只有大約3個唯一值,並非所有批次都具有系統屬性。

方法,只要返回的關係:

  • ResourceIterator<Node> r = graphDb.findNodes(LabelTypes.Lot, "lot_id", lot);

  • Map<String,Object> parms = new HashMap<String,Object>(); parms.put("lots", lots); Result r = graphDb.execute("MATCH (n:Lot) WHERE n.lot_id in {lots} return n;", parms);

方法不返回的關係:

  • ResourceIterator<Node> r = graphDb.findNodes(LabelTypes.Lot, "system", system);
  • Map<String,Object> parms = new HashMap<String,Object>(); parms.put("lotSystem", system); Result r = graphDb.execute("MATCH (n:Lot) WHERE n.system = {lotSystem} return n;", parms);

的模式似乎是,如果我在lot_id查詢我得到的關係,如果我在系統查詢我沒有得到任何。不知道爲什麼。

從Neo4j的GUI一些額外的信息:

如果我運行此查詢:match (n:Lot) where n.system="SAMPLE" return n limit 1;然後我得到我的單很多,但在GUI中沒有任何反應就可以了,如果我雙擊,沒有關係如圖。

Graph 1

如果我複製lot_id此節點和運行一個查詢只爲節點,然後關係回來的時候我雙擊該節點:match (n:Lot) where n.lot_id="someLotId" return n limit 1;

enter image description here

+0

什麼是'system'類型單一的節點?確保你傳入參數的類型與存儲在圖表中的內容相符。 –

+0

@WilliamLyon - 系統是一個字符串。我不禁要重複說明查詢總是返回節點;只有當我打電話給getRelationships時,我纔有麻煩。 – Peter

+0

您能否提交來自Neo4j GUI的屏幕截圖或/和數據樣本,其中關係是針對指定的,由「系統」找到的? – FylmTM

回答

2

我猜你在你的數據集中有問題。

確保由lot_idsystem返回的節點確實是相同的節點。 由於導入問題,您可能已損壞了數據集。

待辦事項列表: - 使用限制你的數據集 - 使用merge,以確保有數據庫

相關問題