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

OrientDB How to check the relationship between 2 node

我有一些 class 'Product' 的顶点可以是 'viewed',或者 class 'User'..

我的问题是我想编写 SQL 查询或 MATCH 命令来获取特定用户的所有“viewed”产品,但尚未被任何用户订购。

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

例如:

ProductA <-viewed- UserA
ProductB <-viewed- UserA
ProductC <-viewed- UserA
ProductD <-viewed- UserA
ProductA <-ordered- UserA
ProductD <-viewed- UserB
ProductD <-ordered- UserB



输入:User A
输出:ProductB, ProductC

谢谢,

我想你可以使用这个查询

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

希望对您有所帮助。

试试这个:

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

这是输出:

更新

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

希望对您有所帮助。

此致