OrientDB如何检查2节点之间的关系

时间:2016-08-31 10:57:00

标签: orientdb

我有一些类的顶点' Product'可以是' viewed'或' ordered'按课程' User' ..

我的问题是我想编写SQL查询或MATCH命令来获取所有' viewed'由特定用户,但它没有被任何用户订购..

如何检查关系' ordered'在Product' User'之间不存在和' User A'在MATCH命令?

例如:

  

ProductA< -viewed- UserA
ProductB< -viewed- UserA
ProductC   < -viewed- UserA
ProductD< -viewed- UserA
ProductA< -ordered-   UserA
ProductD< -viewed- UserB
ProductD< -ordered-   用户B



输入:ProductB, ProductC
输出:{{1}}

谢谢,

2 个答案:

答案 0 :(得分:3)

试试这个:

MATCH {CLASS:Product, AS:pdt, WHERE: (in().size() == 1 and inE().@class = "viewed" and in().name contains "UserA")} RETURN pdt.name

这是输出:

enter image description here

<强>更新

MATCH {CLASS:Product, AS:pdt, WHERE: (in("viewed").name contains 'UserA' and in("ordered").size()=0)} RETURN pdt.name

希望它有所帮助。

此致

答案 1 :(得分:1)

我认为你可以使用这个查询

select from Product where in("viewed").@rid contains userRid and in("ordered").size()=0

希望它有所帮助。