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]
我们有 '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]