Neo4j - 订购作为中间结果一部分的列表

Posted

技术标签:

【中文标题】Neo4j - 订购作为中间结果一部分的列表【英文标题】:Neo4j - Order a list which is part of intermediate result 【发布时间】:2021-11-23 19:14:11 【问题描述】:

我使用movies2 数据库作为 Neo4j 桌面中查询调优练习的一部分。 我想返回一个表格,其中包含多次使用的电影标题,没有。该标题被使用的次数,以及其发布年份的排序列表。桌子本身应该有更高的电影。顶部的标题重用。

构建可以完成上述任务的 Cypher 查询的最有效方法是什么?

【问题讨论】:

【参考方案1】:

我想出了一个(可能是复杂的)查询来完成必要的输出。

CALL 
    CALL 
        MATCH (m:Movie)
        WITH collect(DISTINCT m.title) AS mTitles
        UNWIND mTitles AS mt
        MATCH (m:Movie)
        WHERE m.title = mt
        WITH mt, count(*) AS numT, collect(m.releaseYear) AS relYr
        WHERE numT > 1
        RETURN mt, numT, relYr
    UNWIND relYr AS yr
    RETURN mt, numT, yr
    ORDER BY yr
RETURN mt, numT, collect(yr)
ORDER BY numT DESC

这是输出,按排序

    发布年份升序, 标题使用次数降序:
╒════════════════════════════════════╤══════╤════════════════╕
│"mt"                                │"numT"│"collect(yr)"   │
╞════════════════════════════════════╪══════╪════════════════╡
│"Dracula"                           │3     │[1931,1958,1992]│
├────────────────────────────────────┼──────┼────────────────┤
│"King Kong"                         │3     │[1933,1976,2005]│
├────────────────────────────────────┼──────┼────────────────┤
│"Alice in Wonderland"               │3     │[1951,1999,2010]│
├────────────────────────────────────┼──────┼────────────────┤
│"Godzilla"                          │3     │[1954,1998,2014]│
├────────────────────────────────────┼──────┼────────────────┤
│"The Three Musketeers"              │3     │[1973,1993,2011]│
├────────────────────────────────────┼──────┼────────────────┤
│"Carrie"                            │3     │[1976,2002,2013]│
├────────────────────────────────────┼──────┼────────────────┤
│"Beauty and the Beast"              │3     │[1991,2009,2014]│
├────────────────────────────────────┼──────┼────────────────┤
│"The Kid"                           │2     │[1921,2000]     │
├────────────────────────────────────┼──────┼────────────────┤
│"Metropolis"                        │2     │[1927,2001]     │
├────────────────────────────────────┼──────┼────────────────┤
│"Frankenstein"                      │2     │[1931,1994]     │
...

【讨论】:

以上是关于Neo4j - 订购作为中间结果一部分的列表的主要内容,如果未能解决你的问题,请参考以下文章

自定义订购 MSSQL 休眠 Spring Boot 2

作为 dplyr 管道的一部分,将中间输出分配给 temp 变量

Neo4j 第九篇:查询数据(Match)

如何选择包含特定子字符串的单词列表作为 SQL 查询(oracle)的一部分?

neo4j 或 neo4j+mysql 用于部分图数据集

neo4j 如何删除所有约束