Neo4j数据建模查询

Neo4j数据建模查询,neo4j,Neo4j,我在一个项目平台上工作,在这个平台上,我使用neo4j在用户之间建立连接。用户可以通过以下不同方式连接到平台上的其他用户 当一个用户登录Facebook时,我得到了他已经在使用我们平台的共同朋友。在那里,我通过创建一个新节点当前用户在我的图形数据库中建立连接,并与他通过facebook认识的所有现有节点建立连接 如果两个用户都在同一个社会/社区中,则一个用户还可以与另一个用户连接。因此,用例是,一旦用户更新了他的居住地址社会名称,city,我就在graph db中进行查询,获取所有也在同一社会中

我在一个项目平台上工作,在这个平台上,我使用neo4j在用户之间建立连接。用户可以通过以下不同方式连接到平台上的其他用户

当一个用户登录Facebook时,我得到了他已经在使用我们平台的共同朋友。在那里,我通过创建一个新节点当前用户在我的图形数据库中建立连接,并与他通过facebook认识的所有现有节点建立连接

如果两个用户都在同一个社会/社区中,则一个用户还可以与另一个用户连接。因此,用例是,一旦用户更新了他的居住地址社会名称,city,我就在graph db中进行查询,获取所有也在同一社会中的节点,并使用关系名称为同一社会的节点创建这个新用户

如果两个用户在同一所大学或学校学习,则同一was用户可能与其他用户连接。我在两个具有相同学院/学校关系的节点之间建立连接

在neo4j中对上述问题建模的最佳方法是什么?如果我在DB中进行查询以获得给定两个节点之间所有关系的所有关系类型和最短路径,那么哪种模型将针对这种类型的查询进行优化

只需在用户之间建立关系

用户-[:朋友]-用户

neo4j中的关系总是有方向性的,但是您可以忽略方向,因为在这种情况下,它没有多大意义。向后遍历关系不会造成性能损失

创建一个代表您的社会/社区的节点,并将居住在那里的所有用户链接到该节点。这有几个好处:

将新用户添加到社区时,与将用户直接链接到所有用户相比,您只创建了一个关系,即N个关系,从社区中删除用户也是如此

您可以在用户和社区之间创建不同的关系

用户-[:生活]-社区1 用户-[:工作]-社区2

这与2号基本相同。您可以区分不同类型的社区、学校等。。通过具有不同的标签/属性

在这个模型中,找到两个节点之间的最短路径将为您提供它们之间最紧密的连接,即通过某种方式了解。您可以按关系类型/社区类型等限制路径