【问题标题】:How to access space separated property in Neo4j using Java如何使用 Java 访问 Neo4j 中的空格分隔属性
【发布时间】:2015-10-22 08:01:55
【问题描述】:

我正在创建一个出租车网络的图形数据库,在每个节点中存储一辆出租车,其中包含一长串属性(日期、费用),我在 Java 中存储了一个日期 DATE 格式包含空格,但匹配时无法访问。

MATCH (t) WHERE t.name='someTaxi' RETURN t.Sun Mar 01 00:00:00 EET 2015;

但这不起作用,所以我使用了反引号

我第二次存储了带有反引号的属性键,例如“Sun Mar 01 00:00:00 EET 2015”

MATCH (t) WHERE t.name='someTaxi' RETURN t.'Sun Mar 01 00:00:00 EET 2015';

但这也不起作用。

那么是否可以在 Neo4j 中存储类似的属性键以及如何返回它?

【问题讨论】:

    标签: java neo4j graph-databases


    【解决方案1】:

    问题

    您正在以这种方式存储一些数据(json 表示):

    {name: "someTaxi", Sun Mar 01 00:00:00 EET 2015 : fees}

    考虑到 Neo'j 使用关系管理此类数据的能力,此数据模型很糟糕。

    解决方案

    您必须使用 Neo4j 的强大功能创建更好的数据模型:关系。这是您要执行的操作的示例:

    这是节点详细信息(伪密码表示):

    (:Taxi{name:someTaxi})-[:EARNED{date:<Here you set your date>}]->(:Fees{value:<The amount>)

    所以现在,要匹配您的费用,您只需使用以下查询:

    MATCH (t:Taxi{name : <taxi Name>})-[r:EARNED{date: <yourDate>}]->(f:Fees) 
    RETURN f.value
    

    【讨论】:

    • 感谢您的回答,但是当我从该数据库中选择时,我需要将属性密钥存储为(日期,费用)原因,我需要检索这辆出租车在特定集合中赚取的费用日期。我必须为全年每天每 15 分钟设置一个属性,即单个出租车 35040 个属性,每个城市网络大约有 100 个出租车,因此从长远来看,将属性数量翻倍将是巨大的.
    • 哇,那你的数据模型错了,用这种方式检索一组数据是个坏主意,首先因为每个节点都有 35040 个属性,这很糟糕,而且你是使用属性名称来存储一些数据。我将编辑答案,向您展示如何使用更好的数据模型来做到这一点。
    猜你喜欢
    • 1970-01-01
    • 2012-08-09
    • 2015-08-18
    • 2016-11-10
    • 2022-07-06
    • 2019-12-27
    • 1970-01-01
    相关资源
    最近更新 更多