你能帮我构建一下密码查询吗?我有以下图形数据库结构:
(parent:Category)-[:subcategory]->(child:Category)
Run Code Online (Sandbox Code Playgroud)
使用此图数据,我具有深层次的分层树.
我在Stackoverfllow.com上找到了以下代码并更改了我的数据:
MATCH (root:Category)-[:subcategory]->(parent:Category)-[:subcategory]->(child:Category)
WITH root, {category: parent, children: collect(child)} AS parent_with_children
WHERE NOT(()-[:subcategory]->(root))
RETURN {category: root, children: collect(parent_with_children)}
Run Code Online (Sandbox Code Playgroud)
但他只对3级树的深度构建响应.我需要更大.我试着像这个例子一样构建json响应:
[
category: {
name: "PC"
children: {
category: {
name: "Parts"
children: {
category: {
name: "CPU"
...
}
}
},
category: {
name: "Accessories"
...
}
}
},
category: {
name: "Laptop"
...
}
]
Run Code Online (Sandbox Code Playgroud)
Cypher可以进行递归调用吗?我认为这会更好.
谢谢.
PS我知道在SO上有类似的问题,但他们没有帮助我.
在某些节点上,我放置了一个标签“ Englist”而不是“ English”。当我尝试重新标记它时,我添加了一个新标签“ English”。现在,我在节点上都有两个标签。
如何摆脱“英语列表”标签?不删除节点。
我正在尝试执行一个查询来检索两个节点a和b之间的所有路径,其中所有路径都具有关系属性。
我已经尝试了很多方法,但是我无法成功。
匹配p =(o {value:“ a”})-[r *]-(x {value:“ b”})其中has(r.property)和r.property =“ foo”返回p
关系部分我已更改为[r * ..]和许多其他选项,但不起作用
函数shortestpath并没有帮助我,因为我不仅想要最短的路径,还想要所有可能性。
有人可以帮我还是告诉我查询中的错误?
先感谢您。
在cypher查询中,我们想要从用户那里获取各种数据.此时,我们使用可选匹配来获取用户的关系.
MATCH (person:Person { Id : xxxx })
OPTIONAL MATCH (person)-[:NEXT*]->(element)
OPTIONAL MATCH (person)-[:WROTE_COMMENT]->(comment)
RETURN person, collect(element) as element, collect(comment) as comment
Run Code Online (Sandbox Code Playgroud)
问题是此查询返回找到的每个注释的所有重复元素.我们可以使用distinct修复它,但是元素不能再添加两次到列表中.
有任何建议如何解决这个问题?
我正在尝试在Neo4J中启动一个新的Java项目,并通过一些教程和示例我已经看到了两种从Java访问Neo4j的方法.GraphDatabaseServer类和Bolt驱动程序类.
据我所知,当您在Neo4j数据库中部署应用程序时,首选GraphDatabaseServer,因为它可以直接访问底层数据库,而另一个可以轻松访问外部数据库服务器.它是否正确?是否有其他差异,优先使用一个或另一个用例?
WHERE EXISTSCQL / Cypher 是否可以使用倍数?基于OpenStreetMap数据集,因此如下所示(不允许):
MATCH path=((node_osm)-[t:TAGS]->(node_addr))
WHERE EXISTS(node_osm.`lat`) AND WHERE EXISTS(node_osm.`lon`)
RETURN path
Run Code Online (Sandbox Code Playgroud)
如果我使用这个:
WHERE EXISTS(node_osm.`lat`) AND (node_osm.`lon`)
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
Don't know how to treat that as a predicate: 4.4732509
如何WHERE EXISTS在Neo4j 3.0.4中使用CQL / Cypher 的倍数?
我正在使用neo4j,我正在尝试查找传感器类型的所有子节点.
以下是我的图表示例:
项目--->集群----->传感器
我想放在一个项目上,找到所有的传感器节点.
我是Neo4j和Python的新手.我试图使用Python驱动程序将一些数据填充到Neo4j中.
我想知道是否可以将Python字典作为Neo4j文档中描述的Literal映射传递.
这将使我能够立即设置应用程序节点属性.属性因节点而异,因此代码会变得很难看.
下面给出一个例子
node1 = {
'def': '"A protein transport process that contributes to protein import into the nucleus, and that results in the vectorial transfer of a cargo-carrier protein complex through the nuclear pore complex from the cytoplasmic side to the nucleoplasmic side of the nuclear envelope." [GOC:curators, ISBN:019 8506732, PMID:14570049, PMID:9126736]',
'id': 'GO:0000060',
'is_a': ['GO:0006886'],
'name': 'protein import into nucleus, translocation',
'namespace': 'biological_process',
'relationship': ['part_of GO:0006606'],
'synonym': [ '"protein import into cell nucleus, translocation" EXACT []' ] …Run Code Online (Sandbox Code Playgroud) 我知道UUID模块,但据我所知,该模块不允许您只使用数字字符.我们希望我们的数据库有数百万条记录,数字搜索比字符搜索更快.
是否有更好的方法为每个节点生成唯一ID?
如果你告诉我使用UUID,在遍历具有数百万和可能的十亿节点的图形数据库时,性能会受到多大影响?
Neo4j为您提供了在json中导出图形的可能性,但我没有找到如何导入这个json以获得新图形.
首先,有可能吗?其他方式呢?
谢谢,