我最近开始使用neo4j和它的查询语言“cypher”来处理建筑/计量数据。
我当前的图形数据库由不同的节点组成(具有不同的标签,例如:点、 Jmeter 、电、装备等,仅举几个例子),并且每一个具有不同的属性(在该上下文中不相关)。
我想做的是得到一个由不同节点组成的子图,这些节点有不同的标签。例如,我想得到所有标签为“point”的节点,以及标签为“equipment”和“meter”的节点。为此,我尝试了以下查询:
MATCH (p:point)
MATCH (e:equip)
MATCH (m:meter)
RETURN p, e, m
然而,这不起作用,因为:此查询在断开的模式之间构建笛卡尔积。
我试图得到这些,这样,如果一个标记为“点”的节点连接到一个“装备”或“ Jmeter ”节点,我将得到关系。如果没有任何东西连接到“点”节点,它将只是独立的。因此,我可以有一个子图与“点”到“ Jmeter ”/“装备”的连接,并在视觉上识别孤立的“点”。
我也试过类似的方法:
MATCH (p:point)--(e:equip)
RETURN p,e
但这只返回了与“装备”节点有一定联系的“点”节点,而没有给出标记为“点”的孤立节点。
期待着你对此的投入(我猜是简单的情况)。
最好的!
3条答案
按热度按时间yizd12fk1#
以下查询将返回每个
point
节点,沿着与之相关的所有equip
节点的列表和与之相关的所有meter
节点的列表。c6ubokkw2#
对于此特定子集示例:
如果您在Neo4j客户端中显示一个图表,它将显示输出,我认为您希望看到这样一个简单的查询(这方面的许多变化也同样有效)
转换到你的数据集,像这样的东西?
在neo4j浏览器中运行这个命令并查看表输出,您将看到客户机在创建显示视图时简化了额外的返回数据(删除空值和重复值)
如果您的目标是最小化并重新构造返回的数据,最佳方法可能取决于您使用的是哪种语言以及您需要/希望它如何格式化,但这里有一个使用neo4j浏览器/桌面客户端的快速示例查询,它可能会给予您一些想法,并帮助您重新构造从密码查询返回的数据。
转换到你的数据集,像这样的东西?
(将neo4j客户端中的表输出与前面的查询进行比较)
Reference article
mgdq6dx13#
说明。为了避免创建笛卡尔积,您需要进行一次匹配。使用where条件,您可以选择带有标签“点”或“装备”的模式。