neo4j - 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
推荐阅读
- mysql - 在项目数据库中创建模型期间 Sequelize CLI 错误
- docker - 自动构建 docker 容器(java 后端,角度前端)
- c - 带参数的读取和系统调用的含义
- json - 在 Azure LogicApps 中解析 JSON
- r - 使用数据框中的名称更改字段名称
- php - 结束进程由 PHP exec 在 Ubuntu 中使用 Apache 创建
- python - 如何在python中修复'TypeError:'NoneType'类型的参数不可迭代'
- amazon-web-services - 如何在 AWS 上为 Elasticsearch 服务添加协调节点?
- python - 是否可以将 CSV 上传到 redshift 并让它自动运行并导出保存的查询?
- mysql - sql IN 关键字和多个输入列 - 如何组合成单个列