如何将地图或json对象存储为neo4j中的属性?

时间:2017-06-05 07:57:31

标签: neo4j cypher

我尝试将地图或json对象存储为Neo4j中的属性,但它不起作用。

2 个答案:

答案 0 :(得分:10)

现在这是节点属性的限制。您可以选择一些解决方法。

  1. 您可以将json对象转换为字符串并将其另存为属性。您可以使用APOC Procedures将JSON字符串与Cypher地图对象进行转换。

  2. 您可以将地图属性保存为节点上的属性,但会丢失从对象本身获得的分组。

  3. 如果#2不够,您还可以更改图形模型,以便JSON对象中的数据对应于与原始节点相关的图形对象,节点和属性。

答案 1 :(得分:0)

neo java OGM库支持将地图存储为属性。如果使用@Properties注释java类字段,库将展开地图到图形节点属性。

类别:

<ListBox.ItemTemplate>
    <DataTemplate>
        <DockPanel >
            <Button DockPanel.Dock="Left" Content="Show" Command="{Binding DataContext.ShowCommand,ElementName=List}" CommandParameter="{Binding}"/>
            <TextBlock Text="{Binding }"/>
        </DockPanel>
    </DataTemplate>
</ListBox.ItemTemplate>

如何在java中使用:

@NodeEntity
public class DataNode {

    @GraphId
    private Long id;

    @Properties
    private Map<String, String> map = new HashMap<>();

    public Map<String, String> getMap() {
        return map;
    }

    public void setMap(Map<String, String> map) {
        this.map = map;
    }
}

neo中的外观如何:

enter image description here

请注意,如果您最终使用带有点“。”的地图键,则从neo =&gt;加载实体时可能会产生时髦的副作用。嵌套地图。然后考虑更改@Properties中的分隔符或更改密钥。