如何解决Neo4j匹配某种类型节点的随机单节点
我有一个用于组的节点,该用户是其中的成员。我想在用户注册时随机将用户自动分配给组。有没有一种方法可以随机匹配某个类型的单个节点。
MATCH (g:Group) return g
以上内容将给我所有小组。要创建关系,我将执行以下操作:
MATCH (u:User {id: <ID>}),(g:Group {id: <ID>}) CREATE (u)-[r:MEMBER_OF]->(g) RETURN type(r)
但是我想做这样的事情:
CREATE(u:User {
id: apoc.create.uuid(),firstName: $firstName,username: $username,phoneNumber: $phoneNumber,createdAt: datetime(),updatedAt: datetime(),role: 'USER'
}
)
WITH u
MATCH (g:Group)
//
CREATE (u)-[:MEMBER_OF]->(g)
return u
我将在其中匹配一个随机组,然后创建MEMBER_OF关系。最终可能还有其他考虑因素,但是现在,我希望仅随机选择一个组,然后创建关系。
解决方法
您可以使用apoc函数apoc.coll.randomItem从所有Group
节点的集合中选择一个随机节点:
MATCH (x:Group)
WITH datetime() AS dt,apoc.coll.randomItem(COLLECT(x)) AS g
CREATE (u:User {
id: apoc.create.uuid(),firstName: $firstName,username: $username,phoneNumber: $phoneNumber,createdAt: dt,updatedAt: dt,role: 'USER'
})-[:MEMBER_OF]->(g)
RETURN u
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。