从GraphDB查询详细信息

人气:502 发布:2022-10-16 标签: gremlin tinkerpop azure-cosmosdb azure-cosmosdb-gremlinapi

问题描述

我们正在尝试在Graphdb中实现面向客户的详细信息,我们只需一个查询就可以获取客户的详细信息,如他的地址、电话、电子邮件等。我们已经使用HAD地址构建了它,具有电子邮件边缘。

g.addV('member').property('id','CU10611972').property('CustomerId', 'CU10611972').property('TIN', 'xxxx').property('EntityType', 'Person').property('pk', 'pk')

g.addV('email').property('id','CU10611972E').property('pk', 'pk')

g.addV('primary').property('id','CU10611972EP').property('EmailPreference','Primary').property('EmailType', 'Home').property('EmailAddress', 'SNEHA@GMAIL.COM').property('pk', 'pk')

g.V('CU10611972').addE('has Email').to(g.V('CU10611972E'))

g.V('CU10611972E').addE('has Primary Email').to(g.V('CU10611972EP')

这是我们与客户建立电子邮件关系的方式。同样,我们与地址和电话也有关系。因此,现在我们正在使用此命令获取与此客户相关的json以用于电子邮件,

g.V('CU10611972').out('has Email').out('has Primary Email')

对于完整的客户详细信息,我们对每个Vertex、Phone、Emaiul和Address使用联合。

您能否建议是否有有效的方法来查询此详细信息?

推荐答案

这实际上归结为两件事。

通用图形数据建模 您正在使用的图形数据库支持和不支持的内容。

使用Gremlin,有几种方法可以为单个顶点建模此数据。

如果数据库支持,请列出类似[‘home’,‘mobile’]的名称列表,并使用元属性为每个名称附加一个电话号码。 据我所知,很多Gremlin实现都选择不支持元属性。在这些情况下,您有几个选择。 (A)拥有一处‘Home’和另一处‘Mobile’属性。如果其中一个未知,则可以不创建该属性,也可以为其赋值,例如 (B)使用前缀字符串,如[";Home:123456789";,";Mobile:123456789],并将它们存储在集合或列表(多属性)中,并使用startingWith谓词在Gremlin中访问它们。如g.V(id).properties('phone').hasValue(startingWith('Mobile')).value()

414