Neo4j 如何在Cypher中使用复杂的嵌套查询
我有一个密码查询,可以找到某个设备最近的最后时间。 我想匹配数据库中的所有设备,其中的last time属性是设备的最新属性,然后返回它们的id。不幸的是,我无法创建正确的子查询 我尝试使用with和{}的示例,但找不到任何有效的方法 (起作用的)主要部件:Neo4j 如何在Cypher中使用复杂的嵌套查询,neo4j,subquery,cypher,with-statement,Neo4j,Subquery,Cypher,With Statement,我有一个密码查询,可以找到某个设备最近的最后时间。 我想匹配数据库中的所有设备,其中的last time属性是设备的最新属性,然后返回它们的id。不幸的是,我无法创建正确的子查询 我尝试使用with和{}的示例,但找不到任何有效的方法 (起作用的)主要部件: 到目前为止,我所尝试的只是语法错误。如何嵌套批量查询?您可以使用MAX函数获取最近一次看到的查询。 然后,您可以使用它获取所有具有上次看到的最新版本的设备 这是一个查询,用于获取上次查看的最大值,然后获取与此上次查看匹配的所有设备 MATC
到目前为止,我所尝试的只是语法错误。如何嵌套批量查询?您可以使用MAX函数获取最近一次看到的查询。 然后,您可以使用它获取所有具有上次看到的最新版本的设备 这是一个查询,用于获取上次查看的最大值,然后获取与此上次查看匹配的所有设备
MATCH (a:device)
WHERE certain filters
WITH MAX(a.last_seen) AS latest_last_seen
MATCH (d:device)
WHERE d.last_seen = latest_last_seen
RETURN d.device_id
(将某些筛选器替换为要应用的筛选器。我认为您忘记在第二个查询中添加某些筛选器)
编辑:按照@InverseFalcon的建议,在上次看到的属性上添加索引
您可以使用MAX函数获取最近一次看到的内容。 然后,您可以使用它获取所有具有上次看到的最新版本的设备 这是一个查询,用于获取上次查看的最大值,然后获取与此上次查看匹配的所有设备
MATCH (a:device)
WHERE certain filters
WITH MAX(a.last_seen) AS latest_last_seen
MATCH (d:device)
WHERE d.last_seen = latest_last_seen
RETURN d.device_id
(将某些筛选器替换为要应用的筛选器。我认为您忘记在第二个查询中添加某些筛选器)
编辑:按照@InverseFalcon的建议,在上次看到的属性上添加索引
如果在您的“主批量”中将
RETURN
替换为with
,会发生什么情况?您能分享一下您是如何组合这两个查询的吗?当我尝试将其替换为“with”时,我得到一个语法错误,所以我用错了。如何使用?Raj-这就是我想知道的方法:)请检查我的答案…如果在“主批量”中RETURN
替换为with
,会发生什么情况?你能分享一下你是如何组合这两个查询的吗?当我尝试用“with”替换它时,我得到了一个语法错误,所以我用错了。如何使用?Raj-这就是我想知道的方法:)请检查我的答案…为了在最后一个匹配中快速查找,您还需要确保在:设备上有索引(上次看到)此解决方案仅适用于1个设备。我想在我的整个设备数据库上运行这个。Max在这种情况下不适用于所有设备:/这适用于所有设备,你能分享你得到的吗?您在“特定筛选器”中添加了什么?为了在最后一个匹配中快速查找,您还需要确保在:设备上有索引(上次查看)。此解决方案仅适用于1个设备。我想在我的整个设备数据库上运行这个。Max在这种情况下不适用于所有设备:/这适用于所有设备,你能分享你得到的吗?你在“特定过滤器”里放了什么?
MATCH (a:device)
WHERE certain filters
WITH MAX(a.last_seen) AS latest_last_seen
MATCH (d:device)
WHERE d.last_seen = latest_last_seen
RETURN d.device_id