我的neo4j数据库中有几个节点,所有节点都是相同的类型,并且有几个属性和值。现在我想为每个节点引入一个比率:不同节点在此属性中具有相同值的可能性(如果它具有此属性)。我可以计算出我瞄准的比率。但是为了在SET命令中使用它,我需要将user2添加到第二个WITH行 - 然后该比率不再起作用。如何更改命令以便计算比率并将其存储在7个节点中?
欢呼 - 雷恩示例:http://console.neo4j.org/r/iwvxf1
我的目标:(很明显,'比例'还不存在 - 这就是我想要实现的目标)
> match n return n.ratio, n.feature1, n.feature2
> +---------+------------+------------+
> | n.ratio | n.feature1 | n.feature2 |
> +---------+------------+------------+
> | 0.42857 | abc123 | ABC |
> | 0.42857 | abc123 | ABC |
< | 0.42857 | abc123 | ABC |
> | 0.28571 | xyz123 | ABC |
> | 0.28571 | abc987 | QWE |
> | 0.28571 | xyz123 | WER |
> | 0.28571 | abc987 | XQZ |
> | null | null | 123 |
> | null | null | 987 |
> +---------+------------+------------+
到目前为止我的查询:
// GET GLOBAL COUNT
MATCH (user1:User)
WHERE user1.feature1 IS NOT NULL
WITH count(*) AS global_count
// GET INDIVIDUAL COUNT
OPTIONAL MATCH (user2:User)
WHERE user2.feature1 IS NOT NULL
WITH global_count, user2.feature1 AS feature, count(*) AS indiv_count
RETURN feature, global_count, indiv_count, ((indiv_count*1.0)/(global_count*1.0)) AS ratio
这确实会返回我想要的比率。但我不知道我需要做些什么来将这些比率存储在各个节点中。作为一个脚本小子,我的自然反应将是一个联想阵列,但AFAIK,在密码中没有这样的东西。如果你能告诉我,我错了,你就是我的一天: - )
答案 0 :(得分:4)
使用WITH:
而不是返回WITH feature, ratio
MATCH (u:User)
WHERE u.feature1 = feature
SET u.ratio = ratio