前言

  • 本文对 neo4j 5.21.0 适用
  • 项目需求是查询哪些图包含指定 keyword,已知实现上用 label 作为图的标识

查询得到所有图

  • 即得到所有 label

    CALL db.labels() YIELD label RETURN label

查询单个图是否包含 keyword

方式一

  • 查询节点

    MATCH (n:lable_1) 
    WHERE n.type CONTAINS 'keyword' OR n.name CONTAINS 'keyword' 
    RETURN n
  • 查询边

    MATCH (:lable_1)-[r]->() 
    WHERE r.name CONTAINS 'keyword' 
    RETURN r

方式二

  • 查询非孤立节点和边

    MATCH (n:lable_1)-[r]->() 
    WHERE n.type CONTAINS 'keyword' OR n.name CONTAINS 'keyword' OR r.name CONTAINS 'keyword' 
    RETURN n, r
  • 查询孤立节点

    MATCH (n:lable_1)
    WHERE (NOT (n)--()) AND (n.type CONTAINS 'keyword' OR n.name CONTAINS 'keyword') 
    RETURN n
  • 注意孤立节点的查询方式

    WHERE (NOT (n)--())

方式三

  • 一次性查询节点和边

    MATCH (n:lable_1)  
    OPTIONAL MATCH (n)-[r]->() 
    WITH n, r 
    WHERE n.type CONTAINS 'keyword' OR n.name CONTAINS 'keyword' OR r.name CONTAINS 'keyword' 
    RETURN n, r
  • 注意 WITH 语句,没有 WITH 语句的化,WHERE 语句不能按预期过滤
本文出自 qbit snap

qbit
268 声望279 粉丝

引用和评论

0 条评论