Neo4j:如何从ID列表中过滤出节点?

时间:2015-11-20 17:01:21

标签: neo4j neo4j.rb

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

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

1 个答案:

答案 0 :(得分:3)

大部分与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)。