首页 > 解决方案 > 新4j。节点上具有多个过滤器的动态查询

问题描述

我有这样的节点,我需要对它们应用过滤器

{
  "value": "ma",
  "object_field_id": 2293
}

{
  "value": 2,
  "object_field_id": 2294
}

MATCH (:UserData {user_id:19})-[:CARD]-(c:Card)-[:FIELD_GROUP]-()-[:FIELD]-(fi:Field) 
WHERE fi.object_field_id IN [23,24] 
  AND (fi.value=~('(?iu).*149.*') 
  AND fi.value=~('(?iu).*gb.*')) 
RETURN c

但它不适用于AND

我的错误在哪里?

标签: filterneo4jcypher

解决方案


这是用于建立关系和节点的查询数据:

    CREATE (a:UserData {user_id: 19})-[r:CARD]->(b:Card {name: "card"})
WITH count(*) as dummy

CREATE (a:FieldUserGroup {data_id: 1290})
WITH count(*) as dummy

CREATE (a:FieldUserGroup {data_id: 1280})
WITH count(*) as dummy

CREATE (a:FieldUserGroup {data_id: 1270})
WITH count(*) as dummy

MATCH (u:FieldUserGroup), (c:Card)  CREATE (c)-[:FIELD_GROUP]->(u)
WITH count(*) as dummy

create (f:Field {value: "jerry", object_field_id: 11})
WITH count(*) as dummy

create (f:Field {value: 2, object_field_id: 12})
WITH count(*) as dummy

create (f:Field {value: "tom", object_field_id: 13})
WITH count(*) as dummy

MATCH (f:FieldUserGroup {data_id: 1290}), (f2:Field) CREATE (f)-[:FIELD]->(f2)
WITH count(*) as dummy

CREATE (c:Field {value: "jack", object_field_id: 14})
WITH count(*) as dummy

CREATE (c:Field {value: 1234, object_field_id: 15})
WITH count(*) as dummy

CREATE (c:Field {value: "robin", object_field_id: 16})
WITH count(*) as dummy

MATCH (f:FieldUserGroup {data_id: 1280}), (c:Field {value: "jack", object_field_id: 14}) CREATE (f)-[:FIELD]->(c)
WITH count(*) as dummy

MATCH (f:FieldUserGroup {data_id: 1280}), (c:Field {value: 1234, object_field_id: 15}) CREATE (f)-[:FIELD]->(c)
WITH count(*) as dummy

MATCH (f:FieldUserGroup {data_id: 1280}), (c:Field {value: "robin", object_field_id: 16}) CREATE (f)-[:FIELD]->(c)
WITH count(*) as dummy

CREATE (c:Field {value: "zazaza", object_field_id: 17})
WITH count(*) as dummy

CREATE (c:Field {value: 6578970, object_field_id: 18})
WITH count(*) as dummy

CREATE (c:Field {value: "hamlet", object_field_id: 19})
WITH count(*) as dummy

MATCH (f:FieldUserGroup {data_id: 1270}), (c:Field {value: "zazaza", object_field_id: 17}) CREATE (f)-[:FIELD]->(c)
WITH count(*) as dummy

MATCH (f:FieldUserGroup {data_id: 1270}), (c:Field {value: 6578970, object_field_id: 18}) CREATE (f)-[:FIELD]->(c)
WITH count(*) as dummy

MATCH (f:FieldUserGroup {data_id: 1270}), (c:Field {value: "hamlet", object_field_id: 19}) CREATE (f)-[:FIELD]->(c)
WITH count(*) as dummy

CREATE (r:card {name: "card2"})
WITH count(*) as dummy

MATCH (r:card {name: "card2"}), (a:UserData {user_id: 19}) CREATE (a)-[:CARD]->(r)
WITH count(*) as dummy

CREATE (a:FieldUserGroup {data_id: 1260})
WITH count(*) as dummy

CREATE (a:FieldUserGroup {data_id: 1250})
WITH count(*) as dummy

CREATE (a:FieldUserGroup {data_id: 1240})
WITH count(*) as dummy

MATCH (f:FieldUserGroup {data_id: 1260}), (r:card {name: "card2"}) CREATE (r)-[:CARD]->(f)
WITH count(*) as dummy

MATCH (f:FieldUserGroup {data_id: 1250}), (r:card {name: "card2"}) CREATE (r)-[:CARD]->(f)
WITH count(*) as dummy

MATCH (f:FieldUserGroup {data_id: 1240}), (r:card {name: "card2"}) CREATE (r)-[:CARD]->(f)
WITH count(*) as dummy

CREATE (c:Field {value: "some value", object_field_id: 20})
WITH count(*) as dummy

CREATE (c:Field {value: "more value", object_field_id: 21})
WITH count(*) as dummy

CREATE (c:Field {value: "this is insane!", object_field_id: 22})
WITH count(*) as dummy

MATCH (f:FieldUserGroup {data_id: 1260}), (c:Field {object_field_id: 20}) CREATE (f)-[:FIELD]->(c)
WITH count(*) as dummy

MATCH (f:FieldUserGroup {data_id: 1260}), (c:Field {object_field_id: 21}) CREATE (f)-[:FIELD]->(c)
WITH count(*) as dummy

MATCH (f:FieldUserGroup {data_id: 1260}), (c:Field {object_field_id: 22}) CREATE (f)-[:FIELD]->(c)
WITH count(*) as dummy

CREATE (c:Field {value: 14948576, object_field_id: 23})
WITH count(*) as dummy

CREATE (c:Field {value: "GB", object_field_id: 24})
WITH count(*) as dummy

CREATE (c:Field {value: 1, object_field_id: 25})
WITH count(*) as dummy

MATCH (f:FieldUserGroup {data_id: 1250}), (c:Field {object_field_id: 23}) CREATE (f)-[:FIELD]->(c)
WITH count(*) as dummy

MATCH (f:FieldUserGroup {data_id: 1250}), (c:Field {object_field_id: 24}) CREATE (f)-[:FIELD]->(c)
WITH count(*) as dummy

MATCH (f:FieldUserGroup {data_id: 1250}), (c:Field {object_field_id: 25}) CREATE (f)-[:FIELD]->(c)
WITH count(*) as dummy

CREATE (c:Field {value: 2, object_field_id: 26})
WITH count(*) as dummy

CREATE (c:Field {value: "Marky", object_field_id: 27})
WITH count(*) as dummy

CREATE (c:Field {value: "Tom Born", object_field_id: 28})
WITH count(*) as dummy

MATCH (f:FieldUserGroup {data_id: 1240}), (c:Field {object_field_id: 26}) CREATE (f)-[:FIELD]->(c)
WITH count(*) as dummy

MATCH (f:FieldUserGroup {data_id: 1240}), (c:Field {object_field_id: 27}) CREATE (f)-[:FIELD]->(c)
WITH count(*) as dummy

MATCH (f:FieldUserGroup {data_id: 1240}), (c:Field {object_field_id: 28}) CREATE (f)-[:FIELD]->(c)
WITH count(*) as dummy

推荐阅读