2014-05-03 80 views
1

我實際上建立在這樣一個問題:How to check if a schema index already exists for a node's property in neo4j?爪哇 - 檢查索引已經存在的Neo4j(if語句)

我卻找不到怎麼辦,如果條款的實際。例如:

label = DynamicLabel.label("Label"); 
Iterable<IndexDefinition> indexes = schema.getIndexes(label); 
for(IndexDefinition index : indexes) { 
    if(index.equals(schema.indexFor(label).on("id"))) { 
     // index exists on property "id" on label "Label"! 
    } 
} 

這是不行的!

回答

3

下面的片段應該有所幫助:

label = DynamicLabel.label("Label"); 
Iterable<IndexDefinition> indexes = schema.getIndexes(label); 
for(IndexDefinition index : indexes) { 
    for (String key: index.getPropertyKeys()) { 
     if (key.equals("id")) { 
       return true; // index for label and property exists 
     } 
    } 
} 
return false; // no matching schema index 

請注意,在Neo4j的2.0/2.1每個索引只有一個單一的財產。多屬性索引尚未支持 - 但API已經爲此設計。

+1

完美!有趣的多個指標,它實際上是我想要實現的(多個指標是)。有什麼建議在此期間做什麼? –

+1

您可以在同一標籤上使用多個索引,每個索引只有一個屬性。建議的解決方法是,如果您想在單個索引上生成多個屬性,則使用包含所有部件和索引的連接屬性。 –