在 Amazon Neptune 中,使用 bothE() 方法时,不等于谓词在边标签上不起作用。这是因为 Neptune 使用了基于索引的查询优化器,对于不等于(!=)谓词,它不会使用索引来加速查询。
要解决这个问题,可以使用 Filter 运算符来过滤边标签。下面是一个示例代码:
g.V().has('person', 'name', 'John').
bothE().filter(not(hasLabel('friend'))).
otherV().values('name')
在这个示例中,我们假设有一个名为 'person' 的顶点标签,具有 'name' 属性。我们首先选择名为 'John' 的顶点,然后使用 bothE() 方法获取与该顶点相关的所有边。接下来,我们使用 filter() 方法来过滤掉边标签为 'friend' 的边。最后,我们使用 otherV() 方法来获取与过滤后的边相关的顶点,并使用 values() 方法来获取这些顶点的 'name' 属性的值。
请注意,这只是一个示例,您需要根据自己的数据模型和查询需求来调整代码。