代码之家  ›  专栏  ›  技术社区  ›  Nafis

在密码器中循环,展开或前臂(NEO4J)

  •  0
  • Nafis  · 技术社区  · 7 年前

    我在NEO4J数据库中有一个关系:

    (r:RateableEntity)<-[t:TAG]-(h:HashTags)
    

    现在,我希望有一个返回列表的查询,其中包括:

    1. 数据库中的hashtagname及其频率列表 hashtagCount 以及与此标签相关的项目列表。 hashtagName hashtagItems id 标签。

    注:我收到的是 hashtag 哈希项目 从输入参数变为变量。

    这是我从我的密码查询中期望得到的结果:

    "hashtagList": [ 
    {
      "hashtagName": "hashtagName1",
      "hashtagCount": number of times hashtag has been used in database,
      "hashtagItems": [ list of relevant items for hashtagName1 ]
    },
    {
      "hashtagName": "hashtagName2",
      "hashtagCount": number of times hashtag has been used in database,
      "hashtagItems": [ list of relevant items for hashtagName2 ]
    },
    ...
    ]
    

    我写了这个密码:

    MATCH p = (r:RateableEntity)<-[t:TAG]-(h:HashTag)
    UNWIND TAIL (NODES(p)) AS hash
    WITH COUNT(hash) as Count, h, hash
    ORDER BY hash LIMIT 3
    WHERE h.tag in hash.tag
    MATCH (r:RateableEntity)<-[:TAG]-(h:HashTag)
     RETURN DISTINCT h.tag, r.id, Count
     LIMIT 3
    

    但它返回了这个结果:

    h.tag       r.id                                  Count
    "vanessa"   "cdd14968-404c-41e9-84d5-bf147030a023"  15
    "vanessa"   "b7e74f38-44e4-4b7f-b2c4-8301023ffa9b"  15
    "vanessa"   "2064d3e4-2995-4202-b178-bb2a6f230ab0"  15
    

    感谢您的帮助。

    2 回复  |  直到 7 年前
        1
  •  2
  •   InverseFalcon    7 年前

    tail(nodes(p))

    MATCH (h:HashTag)
    WITH h LIMIT 3 // best to limit early to avoid doing unnecessary work
    WITH h, h.tag as hashtagName, size((h)-[:TAG]->()) as hashtagCount, [(h)-[:TAG]->(r:RateableEntity) | r.id] as hashtagItems
    WITH h {hashtagName, hashtagCount, hashtagItems} as entry
    RETURN collect(entry) as hashtagList
    

    MATCH (h:HashTag)
    WITH h, size((h)-[:TAG]->()) as hashtagCount
    ORDER BY hashtagCount DESC
    LIMIT 3
    WITH h, hashtagCount, h.tag as hashtagName, [(h)-[:TAG]->(r:RateableEntity) | r.id] as hashtagItems
    WITH h {hashtagName, hashtagCount, hashtagItems} as entry
    RETURN collect(entry) as hashtagList
    
        2
  •  0
  •   Nafis    7 年前

    MATCH (:RateableEntity)<-[:TAG]-(p:HashTag)
    RETURN p.tag As Tag, COUNT(p) as Count, [(p)-[:TAG]->(m) | m.id][..3] AS 
    RateableEntities ORDER BY Count DESC LIMIT 3
    

    limiting-match-results-per-row/