人员节点:
公司节点:
关系:
个人和实体:
public class Person {
@Id
@GeneratedValue
Long personId;
@Builder
public Test(Long personId, String firstName, String lastName, String address, String email, String phoneNumber) {
this.personId = id;
this.firstName = firstName;
this.lastName = lastName;
this.addresss = address;
this.email = email;
this.phoneNumber = phoneNumber
}
@NotEmpty(message = "Please provide a first name")
String firstName;
@NotEmpty(message = "Please provide a last name")
String lastName;
String address;
String email;
String phoneNumber;
@Relationship(type = "SPOUSE",direction=Relationship.OUTGOING)
public Set<Person> spouse;
@Relationship(type = "SIBLING",direction=Relationship.OUTGOING)
public Set<Person> sibling;
@Relationship(type = "FAMILY",direction=Relationship.OUTGOING)
public Set<Person> family;
}
当我为简创建一个人时,我也添加了与约翰的兄弟姐妹关系。
运行个人。fetchById(“29d31f6c-edfe-48a2-9ab2-3baed5d5ae69”)
检索节点Jane和对应的同级节点John。
{
"address":"",
"email":"",
"phoneNumber":"",
"personId":"29d31f6c-edfe-48a2-9ab2-3baed5d5ae69",
"firstName":"Jane",
"lastName":"Smith",
"spouse":null,
"sibling":[
{
"address":"",
"email":"",
"phoneNumber":"",
"personId":"f825cedd-7328-4f9d-b0fd-a33726814f25",
"firstName":"John",
"lastName":"smith",
"spouse":null,
"sibling":[],
"family":null
}
],
"family":null
}
但是,手足关系应该是双向的。运行person.fetchById("f825cedd-7328-4f9d-b0fd-a33726814f25")
仅检索节点John。
{
"address":"",
"email":"",
"phoneNumber":"",
"personId":"f825cedd-7328-4f9d-b0fd-a33726814f25",
"firstName":"John",
"lastName":"Smith",
"spouse":null,
"sibling":null,
"family":null,
"closeFriend":null,
"friend":null
}
这就是问题所在。我可以在约翰和简之间添加另一种兄弟姐妹关系。但是,这实际上在两者之间创建了一个无限循环。以及个人的输出。fetchById
最终变成了垃圾。
据我所知(我也刚刚开始学习Neo4j),你不可能拥有双向的关系,人们总是建议你拥有双向的关系。
如果您决定在另一个方向添加另一个关系,可以将跳数限制为一个:
Cypher如何仅计算特定类型节点的最大跳数?
或者,如果希望看到更长的关系链,可以对结果设置一个条件,使其不返回结果中的原始节点?
你在用SDN吗?
来自Spring Data Neo4j文档:
如果不关心方向,则可以指定方向=关系。无方向,这将保证两个节点实体之间的路径可以从任意一侧导航。
我需要在所有具有相同属性值的节点之间创建关系。 例如,我可以使用以下查询: 但是如果我有大约200K的节点,这个脚本运行的时间相当长。 有没有其他更快的方法来建立这样的关系? 谢谢
我现在的解决办法是先保存所有的ArchitectureUnitState节点,从数据库中再次检索它们,将一个节点映射到另一个节点,然后再次保存它。这样,可以创建关系,但我需要保存两次。
我正在创建一个简单的社交图,用户可以在其中创建一个帖子,标记它,并对它进行评论。我用py2neo做模型。该模型具有和作为节点。用户在上、或。在我的例子中,单个用户可以在单个上创建多个或(就像其他任何社交网络一样)。根据我的模型,这需要多个或关系,但具有不同的属性。模型是这样建立的: 我运行以下操作来构建图形: 我希望有两个关系,如下所示: 但我看到事实并非如此: 那么,我的问题是双重的。(1)可以
我有以下图表: 我正在寻找一种方法来计算从a发送到b和从b发送到c/d的金额之间的差异,这取决于referenceId,但不使用特定的referenceId。 所以我在寻找像下面这样的半代码: 有人知道我该怎么做吗?
花了好几天的时间试图弄明白为什么这不起作用。我的模型是
从Neo4j 1.9开始。2,并使用Cypher查询语言,我希望在具有特定公共属性值的节点之间创建关系。我有一组具有属性H的节点G,在G节点之间当前不存在任何关系。 在Cypher语句中,是否可以按H属性值对G节点进行分组,并在成为同一组的每个节点之间创建关系HR?知道每个小组的人数在2人之间 我一直在努力管理这样的查询,但没有找到正确的语法。下面是一个小样本数据集: 最后,我希望有这样的关系: