首页 > 解决方案 > 两个连续“或”之间的区别分别VS包括相同“或”内的每个条件

问题描述

我试图理解做两个连续或单独制作与将所有条件放在一个或中的概念差异。我这样做会产生不同的值:

分别做 or :

g.V(1).in('linked_to', 'used_by')
 .or(has('type', 'knows'), has('type', 'like'), has('type','follows'))
 .or(hasNot('last_used'), has('last_used',gt(datetime('2021-09-07T10:04:05.000Z'))))
 .out('linked_to', 'used_by')
 .dedup()

vs 包括 or 在一个相同的 or 中

g.V(1).in('linked_to', 'used_by')
 .or(has('type', 'knows'), has('type', 'like'), has('type','follows') , hasNot('last_used'), has('last_used',gt(datetime('2021-09-07T10:04:05.000Z'))))
 .out('linked_to', 'used_by')
 .dedup()

标签: gremlintinkerpop

解决方案


or对于几个测试,你真的不需要一个步骤。您可以within改用并将其余步骤包装在or. 请注意,这hasNot(key)可能是一个昂贵的过滤器,因为您正在测试每个正在测试的顶点上是否不存在某些东西,这可能不是索引帮助的东西。例如:

g.V(1).
  in('linked_to', 'used_by').
  or(has('type', within('knows', 'like', 'follows')),
     hasNot('last_used'), 
     has('last_used',gt(datetime('2021-09-07T10:04:05.000Z'))))

推荐阅读