考虑到db中存在三种类型的节点,由模式连接
(a:a)-[ra:madeWithB {ra.qty}]->(b:b)-[rb:madeWithC {rb.qty}]->(c:c)
用户可以与这些类型中的每一种建立连接。
(user)-[:has {qty}]->(a:a)
(user)-[:has {qty}]->(b:b)
(user)-[:has {qty}]->(c:c)
查询数据库以返回用户所拥有的所有节点的列表的最佳方法是什么,考虑到当他::(a)
然后在结果中关联(b)
和在将qty字段乘以后,还应该返回(c)
吗?
真实世界的例子:用户购买了三个宜家家具齐全的房间(节点a
)。数据库知道它们中的家具(b
节点)以及这些项目所需的部分(指甲和东西,c
节点)。用户还购买了一些其他随机家具(即:更多b
个节点,没有连接到任何a
但连接到更多c
)和一些额外的备用钉子和其他部分(即:更多c
个节点,未与任何b
连接。)
所以 - 知道a
以及其他b
和c
的列表 - 打印所有b
的列表(这将是三者中包含的总和)房间+额外)和c
(这将是所有家具和额外所需的部件),以及相关的数量。
注意:在匹配节点时,请考虑任意长度的查询。