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
希望对您有所帮助。
此致
我有一些 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
希望对您有所帮助。
此致