微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

py2neo是否通过REST API访问Neo4j中的所有数据类型字符串?

我有这种形式的查询,在neo4j中创建一个新节点:

cypher.get_or_create_indexed_node(index =“ person”,key =“ name”,value =“ Fred”,properties = {“ level”:1}

但是,当我查询Fred检查他的属性时,他的级别=“ 1” /带引号/.似乎有些东西将他的值转换为字符串.这没什么大不了的-我可以根据需要在检索时将其转换-除了我尝试进行密码查询时…

开始b = node:person(“ *:*”)返回b.level,ID(b)的排序依据b.level desc跳过5限制5;

…我注意到b.level的订购不符合预期.我看到类似的东西:

==> +-------------------------+
==> | b.level         | ID(b) |
==> +-------------------------+
==> | "3"             | 42    |
==> | "0"             | 53    |
==> | "2"             | 57    |
==> | "0"             | 63    |
==> | "2"             | 20    |
==> +-------------------------+

当我期望像这样的时候:

==> +-------------------------+
==> | b.level         | ID(b) |
==> +-------------------------+
==> | 3               | 42    |
==> | 2               | 20    |
==> | 2               | 57    |
==> | 0               | 63    |
==> | 0               | 53    |
==> +-------------------------+

我认为这是一个数据类型的问题,因为reference manual显示了跳过/限制功能.

是所有值都是字符串,还是我应该添加其他内容才能正确输入?

解决方法:

事实并非如此,完全支持数字属性.我也无法使用以下测试来重新创建方案:

def test_get_or_create_indexed_node_with_int_property(self):
    graph_db = neo4j.GraphDatabaseService()
    fred = graph_db.get_or_create_indexed_node(index="person", key="name", value="Fred", properties={"level" : 1})
    assert isinstance(fred, neo4j.Node)
    assert fred["level"] == 1
    graph_db.delete(fred)

我注意到您已在cypher的get_or_create_indexed_node方法前面添加了前缀-我不希望这样,因为cypher模块没有这种方法.相反,我希望它是诸如graph_db或批处理之类的东西.也许这是一个错字?

也许您可以共享更多周围的代码?它周围的其他内容可能会影响您的结果.

尼格

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐