标签:py2neo neo4j nosql cypher python
我有这种形式的查询,在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或批处理之类的东西.也许这是一个错字?
也许您可以共享更多周围的代码?它周围的其他内容可能会影响您的结果.
尼格
标签:py2neo,neo4j,nosql,cypher,python 来源: https://codeday.me/bug/20191031/1976399.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。