Neo4j:如何从 ID 列表中过滤掉节点?
Neo4j: How to filter out nodes from a list of IDs?
我正在尝试 "select all posts" 并排除 ID 数组中的特定节点(post 作者)。使用 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
)。
我正在尝试 "select all posts" 并排除 ID 数组中的特定节点(post 作者)。使用 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
)。