我正在尝试"选择所有帖子"并排除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
)。