Neo4j:如何从ID列表中筛选出节点



我正在尝试"选择所有帖子"并排除ID数组中的特定节点(帖子作者)。使用SQL可以使用NOT IN (1, 2, 3)。如何创建CYPHER查询来完成此操作?

Post  <-- author --  User
 - ID                 - ID

大部分与SQL相同;)

MATCH (author)-[:author]->(post:Post)
WHERE NOT(ID(author) IN {id_list})
RETURN DISTINCT post

由于您将问题标记为Neo4j.rb:

User.as(:author).posts.where('NOT(ID(author) IN ?)', [1,2,3])

在Neo4j.rb的较新版本中:

User.as(:author).posts.where_not('ID(author) IN ?', [1,2,3])

你没有提到什么类型的ID,所以我默认使用Neo4j ID,但请记住,这些ID可以回收,所以它们不能作为参考长期使用。

编辑:

你的评论让我们意识到,也许更好的方法是:

User.where_not(id: ids).posts

它应该将id转换为用于id_property的任何内容(默认情况下为uuid)。

相关内容

  • 没有找到相关文章

最新更新