我的节点有一个包含整数的数组属性category_ids
。
我可以在{1,2,3]中查询category_ids
与{1}}不匹配的节点:
START node(*)
WHERE NOT(ANY(x in node.category_ids WHERE x IN [1,2,3]))
RETURN node;
我可以使用索引(我称之为nodes_categories
并且它是标准的精确lucene索引)从我想要过滤的节点开始:
START excluded=node:nodes_categories("category_ids:(1 2 3)")
RETURN excluded;
但是如何使用我的索引来获取 想要的节点? IE返回所有节点减去我的索引命中返回的节点?这是我的开始:
START node=node(*), excluded=node:nodes_categories("category_ids:(1 2 3)")
???
RETURN node;
编辑:neo4j版本是1.9.M02
答案 0 :(得分:3)
天真的方式(更新):
START node=node(*), excluded=node:nodes_categories("category_ids:(1 2 3)")
WITH collect(excluded) as excluded, node
WHERE not node in(excluded)
RETURN distinct node;
更好的方法是弄清楚如何只查询所需节点的索引。不过,我不确定是否有办法在lucene语法中执行此操作。也许是这样的:
START node=node:nodes_categories('category_ids:(* NOT 1 NOT 2 NOT 3)')
return node;