在我的情况下,有两个顶点标签:User,Seller。
使用自定义顶点id注册用户创建新顶点:
g.addV(label,'User', 'id', '123456789', 'name', 'User1').next();
当用户登录并且他注册新业务时,他就成了卖方。 现在我希望相同的顶点id成为卖方标签的一部分,这是不可取的。
如果我使用卖家标签创建新顶点,那么卖家顶点将无法访问存储在用户顶点上的整个图表(hasmobile,hasaddress)。
有没有办法在DSE图中实现这一点?
答案 0 :(得分:1)
TinkerPop和DSE Graph的语义(以及大多数图形实现 - Neo4j是我能想到的唯一例外)不允许顶点具有多个标签。您可能会想到这样的原因,即您在SQL数据库中的多个表中不存在行的原因。
有多种方法可以解决这个问题。做个人"顶点(而不是"用户"或"卖方")然后:
推断他们是否是"用户"或"卖方"从与他们相关的数据的某些方面。也许这是通过" isSeller"或"是用户"属性。然后你会用
查询卖家 g.V().hasLabel('Person').has('isSeller',true)
创建一个子类型系统,您可以在其中连接" Person"顶点到"用户"顶点或"卖方"顶点。然后,您可以执行类似"只有当他们是卖家时才能找到用户"与
g.V().hasLabel('User').has('someid','12345').
filter(__.in('isAPerson').out('isASeller'))