【发布时间】:2015-03-17 15:34:16
【问题描述】:
简介:
嗨,
我有一个关于如何创建 OrientDB 查询的问题。查询应该得到朋友的朋友的所有顶点(这相当于二级关系)+两者之间的桥梁。之后,查询应该过滤边缘属性之后的记录。
我正在运行 OrientDB 1.7.4。
架构示例:
我们举个例子,采用以下架构:
-> User 是一个 Vertex,属性 id (int)
-> Knows 是一个 Edge,具有属性类型(字符串)(假设这个属性有几个值:朋友、家人等)
我要找的关系是这样的:
User <--knows--> User <--knows--> User
(1) (2) (3)
我需要所有关系,不管它们有什么方向(即使方向对其他查询很重要)。
要获得所有二级用户(User3),这样的查询就足够了:
select expand( set(both().both()) ) from <rid>
问题:
现在,我有 2 个主要问题/我无法弄清楚:
如果上面的查询返回来自 User (User3) 类的记录列表,我如何从中间的用户获取记录为 User (User3) 和用户(或属性 id)关系(见上文:User2)
如何过滤查询以仅通过具有特定属性的边进行遍历(或选择)。更具体地说,我希望第二个查询找到来自问题 1 但是朋友的朋友的用户:
User <--knows(method='friend')--> User <--knows(method='friend')--> User。
【问题讨论】:
-
这个
select bothE('knows')[method='friend'] from User为您提供了方法“朋友”的优势。也许它可以帮助你。 -
您好,请为您解答。这会有所帮助,但这并不是我想要的。这样我可以得到边缘,但不能得到顶点。我需要我的输出属于 User 类。
标签: orientdb