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

Neo4j:如何从ID列表中筛选出节点?,neo4j,neo4j.rb,Neo4j,Neo4j.rb,我试图“选择所有帖子”并排除ID数组中的特定节点(帖子作者)。使用SQL,您可以在(1、2、3)中使用而不是。如何创建密码查询来执行此操作 Post <-- author -- User - ID - ID Post与SQL基本相同;) 由于您将问题标记为Neo4j.rb: User.as(:author).posts.where('NOT(ID(author) IN ?)', [1,2,3]) User.as(:author).posts.whe

我试图“选择所有帖子”并排除ID数组中的特定节点(帖子作者)。使用SQL,您可以在(1、2、3)中使用
而不是
。如何创建密码查询来执行此操作

Post  <-- author --  User
 - ID                 - ID
Post与SQL基本相同;)

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

User.as(:author).posts.where('NOT(ID(author) IN ?)', [1,2,3])
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])
User.as(:author).posts.where_not('ID(author) IN ?', [1,2,3])
您没有提到什么类型的ID,所以我默认使用Neo4j ID,但请记住,这些ID可以循环使用,因此它们不会作为参考长期使用

编辑:

你的评论应该意识到,也许更好的方法是:

User.where_not(id: ids).posts

它应该将
id
转换为您用于
id\u属性的任何内容(
uuid
默认设置)。

哦,我想我应该澄清一下,我有一个Neo4j。rb
在模型上有很多关系。因此,我不知道映射到该列表以获取
neo_id
是否是一种方法?如果映射到关联,您将获取节点的所有数据。如果您只需要id,您可以
object.association.pull(:uuid)
(如果您使用的是ActiveNode中的默认
uuid
标识符),然后执行
。其中不需要('author.uuid IN',id)
。我注意到您是从用户而不是从帖子创建Ruby查询的。我正试图从一个帖子容器中编写这个查询。有没有一种方法可以像
container.posts.author.where\u not(id:ids)。然后返回\u posts
?是的,当然有:
container.posts(:post.author.where\u not(id:ids)。pull(:post)
(可能需要是
.pull('DISTINCT post')
BTW)它在这里的文档中:但作为一些示例的一部分,它可能应该放在更突出的位置。