Gremlin - 如何根据 Edge 的 属性 筛选结果?

Gremlin - How to filter results based on Edge's property?

我们有 'users' 条记录,并且与其他用户有 'friend' 条关系。我想通过将 isDeleted 属性 添加到 'friend' 边缘来软删除关系,并根据 属性 过滤结果。我们如何查询那个案例?

添加 4 个用户:

g.addV('users').property(id,'user1').addV('users').property(id,'user2').addV('users').property(id,'user3').addV('users').property(id,'user4')

添加user1到user2、user3、user4的好友关系

g.V('user1').addE('Friend').to(V('user2')).next()
g.V('user1').addE('Friend').to(V('user3')).next()
g.V('user1').addE('Friend').to(V('user4')).next()

检查所有边不包含 isDeleted 标志的朋友

gremlin> g.V('user1').outE().hasNot('isDeleted').inV()
==>v[user2]
==>v[user3]
==>v[user4]

将 user1 和 user2 之间的边标记为已删除

g.V('user1').outE().as('myEdge').inV().has(id,'user2').select('myEdge').property('isDeleted',true)

获取 user1 的已删除好友,带有 isDeleted 标志的边为真

gremlin> g.V('user1').outE().has('isDeleted',true).inV()
==>v[user2]

获取 user1 的当前好友,不带 isDeleted 标志。

gremlin> g.V('user1').outE().hasNot('isDeleted').inV()
==>v[user3]
==>v[user4]