如何对collect()列表中的元素进行计数,并将该计数()用于WHERE条件



希望得到一些帮助。

具有以下查询:

MATCH  (a:Academy)-[]-(w:Work)
RETURN collect(distinct a.name)as Associated_academies_for_this_book,w.shortTitle as  
book_short_title, w.workId as Book_ID order by size(collect(distinct a.name)) desc

使用此输出:结果查询

我只需要返回第一列(由collect(distinct a.name(生成的列(的列表中有1个以上元素的结果,我尝试了count(collect(>1和类似的东西,但没能得到我需要的东西。有什么想法吗?

非常感谢

您可以使用size

MATCH (a:Academy)-[]-(w:Work)
WITH collect(distinct a.name) as Associated_academies_for_this_book, w.shortTitle as book_short_title, w.WorkID as Book_ID 
WHERE size(Associated_academies_for_this_book)>1
RETURN book_short_title, Book_ID

您可以使用文档中引用的count,聚合与*一起使用,这应该会为您提供引用。

MATCH (a:Academy)-[]-(w:Work)
WITH collect(distinct a.name) as Associated_academies_for_this_book, 
w.shortTitle as book_short_title, w.workId as Book_ID, count (*) as occ
WHERE occ>1
RETURN occ, Associated_academies_for_this_book, book_short_title, Book_ID

第二个步骤将此信息存储为occ变量,并将WITH语句中的其他相关列作为中间步骤,如果需要,可以在稍后的RETURN语句中使用它。您可以使用sizecount聚合。

最新更新