两个连续 "or" separtely 之间的差异 VS 包含相同 "or" 中的每个条件

Difference between two consecutive "or" separtely VS include every condition within same "or"

我试图理解做两个连续的或分开的与将所有条件放在一个或中的概念差异。我通过这样做产生了不同的值:

单独执行 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()

您确实不需要 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'))))