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

时间:2012-12-12 02:59:51

标签: python nosql neo4j cypher py2neo

我有一个查询此表单在neo4j中创建一个新节点:

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

但是,当我查询Fred检查他的属性时,他的等级=“1”/带引号/。似乎有些东西正在将他的值转换为字符串。这没关系 - 如果有必要,我可以在检索时转换它 - 除非我尝试进行类似的密码查询...

start b = node:person("*:*") RETURN b.level, ID(b) ORDER BY b.level desc SKIP 5 LIMIT 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显示跳过/限制功能。

是不是所有的值都是字符串,或者我应该正确添加其他东西呢?

1 个答案:

答案 0 :(得分:4)

不应该是这种情况,完全支持数字属性。我也无法使用以下测试重新创建场景:

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)

我注意到你在get_or_create_indexed_node方法前面添加了cypher - 我不希望这样,因为密码模块没有这样的方法。我希望它可以是graph_dbbatch。也许这是一个错字?

也许您可以分享一些周围的代码?它周围的其他东西可能会影响你的结果。

的NiGe