如何确定Neo4j 2.2.3中关系的最大属性

如何确定Neo4j 2.2.3中关系的最大属性,neo4j,Neo4j,如何快速获取关系的所有实例的属性的最大值或最小值?您可以假设我正在运行此功能的机器在图形的cpu和内存大小的推荐规范内,堆大小也相应地设置 事实: 使用Neo4j v2.2.3 只有通过Cypher查询语言才能修改图形,我正在通过PHP或web界面使用Cypher查询语言,Xe希望避免任何需要java编码的解决方案。 我有一个关系,就像有一个整数的属性id一样。 在这些关系中,大约有1亿人的关系正在增长 每天我都从MySQL表中抓取新的喜好添加到Neo4j中的图形中 关系属性id实际上是原始My

如何快速获取关系的所有实例的属性的最大值或最小值?您可以假设我正在运行此功能的机器在图形的cpu和内存大小的推荐规范内,堆大小也相应地设置

事实:

使用Neo4j v2.2.3 只有通过Cypher查询语言才能修改图形,我正在通过PHP或web界面使用Cypher查询语言,Xe希望避免任何需要java编码的解决方案。 我有一个关系,就像有一个整数的属性id一样。 在这些关系中,大约有1亿人的关系正在增长 每天我都从MySQL表中抓取新的喜好添加到Neo4j中的图形中 关系属性id实际上是原始MySQL表中的主键自动递增整数。 我只想添加新的likes,所以在查询MySQL的新条目之前,我想从likes中获取max id,这样我就可以在SQL查询中使用它作为SELECT*from likes\u table,其中id>max\u neo4j\u like\u property\u id 如何以最佳方式从neo4j获取max id属性?请指出任何索引所需的create语句以及用于获取最终结果的查询

我已尝试按如下方式创建索引:

 CREATE INDEX ON :likes(id);
索引联机后,我已尝试:

 MATCH ()-[r:likes]-() RETURN r.i ORDER BY r.id DESC LIMIT 1
以及:

 MATCH ()-[r:likes]->() RETURN MAX(r.id) 
这两种方法都有效,但由于解释计划都表明没有使用索引,因此它们会永远异常


更新:神圣的$?@$?!!!!看起来新的模式索引对于关系来说不起作用,即使您可以创建它们并使用:schema显示它们。另外,似乎cypher无法直接创建遗留索引,而这些索引似乎可以解决此问题。

如果需要查询关系属性,这通常是模型问题的标志

此查询的需要表明,您最好将这些属性提取到一个节点中,这样您就能够更快地进行查询

我并不是说这是100%的情况,但肯定的是,到目前为止,99%的有同样问题的人已经证明了这种模式的担忧

你现在的型号是什么


此外,在查询中根本不使用标签,比如将上下文绑定到节点。

我可能只会将上次插入的max id存储在Neo4j或MySQL中的某个位置,并在完成一批插入后进行更新。模式索引从来不是用于关系,您所做的是为标签创建节点标签索引:likes@MichaelHunger我懂了。我没想到neo4j会允许我在不存在的节点标签上创建索引,但您的解释是有道理的。我很确定,我将不得不创建一种额外的方法来跟踪它,也许只是创建一个带有单个值IO更新的跟踪节点。我希望这是一件本质上可能的事情。有时我只是想通过id获取一个特定的关系,这似乎也不起作用。@MichaelHunger你知道未来是否有计划允许通过模式索引或其他方式对关系进行索引?我想我可以将每个关系作为一个节点,然后,与直接在两个people节点之间建立类似类型的关系不同,我可以做一个不可靠的工作:n:person{id:'bob'}->:likes{id:3}->:person{id:'jim'}。我不使用这个属性进行一般查询。我用它来确定添加到图表中的最后一个关系。在我如何从另一个数据源填充图形的OP描述中,您可以看到它是如何使用的。我现在看到,我在节点上创建了一个带有like标签的索引,而不是一个like关系类型的索引。您不能在关系类型上创建索引