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