登录
CyFormatter
分类:工具软件 访问:9 下载量:0

软件介绍

更新时间:2025-05-05

CyFormatter:Cypher查询语言格式化工具,提升查询效率

CyFormatter是一款专门针对Cypher查询语言设计的格式化工具,能够帮助开发者快速格式化和优化Cypher查询。通过与Cypher QL扩展配合使用,用户可以享受一键操作的便捷体验,将Cypher查询压缩成单行并复制到剪贴板,极大提升了开发效率。

功能特点:

  • 一键格式化: 使用快捷键opt shift f即可格式化您的Cypher查询文档,让代码更加清晰易读。
  • 单行压缩和复制: 提供一个按钮,点击即可将Cypher查询压缩成单行并复制到剪贴板,方便在其他地方使用。
  • 与Cypher QL扩展配合: 需要先从扩展市场安装Cypher QL,并选择Cypher QL作为语言,才能使用CyFormatter的功能。

使用要求:

  1. 从扩展市场安装Cypher QL扩展。
  2. 在编辑器中选择Cypher QL作为语言。

格式化效果展示:

以下是使用CyFormatter前后的Cypher查询示例:

示例1:

原始查询:

CALL {
    MATCH (type1:`type1` { fieldName: 'fieldValue', type: 'type1' })
    WITH type1
    MATCH (type1:`type1`)-[:`RELATES_TO` { fieldName: 'a' }]->(type2:`type2` { fieldName: 'fieldValue' })
    WHERE type2.fieldName2 = 'xxxxx'
    RETURN DISTINCT type1

    UNION

    MATCH (type1:`type1` { fieldName: 'fieldValue', type: 'type1' })
    WITH type1
    MATCH (type1:`type1`)-[:`RELATES_TO` { fieldName: 'dd' }]->(type2:`type2` { fieldName: 'fieldValue' })
    WHERE type2.fieldName2 = 'xxxxx'
    RETURN DISTINCT type1

    UNION

    MATCH (type1:`type1` { fieldName: 'fieldValue', type: 'type1' })
    WITH type1
    MATCH (type1:`type1`)-[:`RELATES_TO` { fieldName: 'oneName' }]->(type3:`type3` { fieldName: 'fieldValue' })
    WHERE type3.fieldName3 = 'xxxxx'
    RETURN DISTINCT type1

    UNION

    MATCH (type1:`type1` { fieldName: 'fieldValue', type: 'type1' })
    WITH type1
    MATCH (type1:`type1`)-[:`RELATES_TO` { fieldName: 'xx' }]->(type2:`type2` { fieldName: 'fieldValue' })
    WHERE type2.name = 'xxxxx'
    RETURN DISTINCT type1

    UNION

    MATCH (type1:`type1` { fieldName: 'fieldValue', type: 'type1' })
    WITH type1
    MATCH (type1:`type1`)-[:`RELATES_TO` { fieldName: 'd' }]->(type2:`type2` { fieldName: 'fieldValue' })
    WHERE type2.name = 'xxxxx'
    RETURN DISTINCT type1 
}
WITH * type1 BY type1.type1Identifier ASC, id(type1) ASC
RETURN type1{ .*, _id: id(type1)} LIMIT 21

格式化后:

CALL {
  MATCH (type1:`type1` {fieldName: 'fieldValue', type: 'type1'})
  WITH type1
  MATCH (type1)-[:`RELATES_TO` {fieldName: 'a'}]->(type2:`type2` {fieldName: 'fieldValue'})
  WHERE type2.fieldName2 = 'xxxxx'
  RETURN DISTINCT type1

  UNION

  MATCH (type1:`type1` {fieldName: 'fieldValue', type: 'type1'})
  WITH type1
  MATCH (type1)-[:`RELATES_TO` {fieldName: 'dd'}]->(type2:`type2` {fieldName: 'fieldValue'})
  WHERE type2.fieldName2 = 'xxxxx'
  RETURN DISTINCT type1

  UNION

  MATCH (type1:`type1` {fieldName: 'fieldValue', type: 'type1'})
  WITH type1
  MATCH (type1)-[:`RELATES_TO` {fieldName: 'oneName'}]->(type3:`type3` {fieldName: 'fieldValue'})
  WHERE type3.fieldName3 = 'xxxxx'
  RETURN DISTINCT type1

  UNION

  MATCH (type1:`type1` {fieldName: 'fieldValue', type: 'type1'})
  WITH type1
  MATCH (type1)-[:`RELATES_TO` {fieldName: 'xx'}]->(type2:`type2` {fieldName: 'fieldValue'})
  WHERE type2.name = 'xxxxx'
  RETURN DISTINCT type1

  UNION

  MATCH (type1:`type1` {fieldName: 'fieldValue', type: 'type1'})
  WITH type1
  MATCH (type1)-[:`RELATES_TO` {fieldName: 'd'}]->(type2:`type2` {fieldName: 'fieldValue'})
  WHERE type2.name = 'xxxxx'
  RETURN DISTINCT type1
}
WITH * ORDER BY type1.type1Identifier ASC, id(type1) ASC
RETURN type1{.*, _id: id(type1)} LIMIT 21

示例2:

原始查询:

MATCH (type1:`type1` {field1: 'value1', type: 'type1'})
WHERE (type1.deleted = false OR type1.deleted IS null )
CALL {
    WITH type1
    MATCH
    (type2:`type2`)-[:`RELATES_TO` {fieldName: 'type3'}]->(type3:`type3`),
    (type2:`type2`)-[:`RELATES_TO` {fieldName: 'type4'}]->(type4:`type4`),
    (type1:`type1`)-[:`RELATES_TO` {fieldName: 'type3'}]->(type3:`type3`),
    (type1)-[:`RELATES_TO` {fieldName: 'type4'}]->(type4:`type4`)
    WHERE type2.startDate = '2022-03-18'
    WITH DISTINCT type2 ORDER BY id(type2) ASC
    CALL {
        WITH type2
        MATCH (type2:`type2`)-[:`RELATES_TO` {fieldName: 'type3'}]->(type3:`type3` {field1: 'value1'})
        WITH DISTINCT type3 ORDER BY id(type3) ASC
        WITH collect(type3{.*, _id: id(type3)})[0..6] AS collectionAlias, count(type3) AS countAlias
        RETURN {dataList: collectionAlias, totalCount: countAlias} AS type2_type3_type3_info 
    }
    CALL {
        WITH type2
        MATCH (type2:`type2`)-[:`RELATES_TO` {fieldName: 'type4'}]->(type4:`type4` {field1: 'value1'})
        WITH DISTINCT type4 ORDER BY id(type4) ASC
        WITH collect(type4{.*, _id: id(type4)})[0..6] AS collectionAlias, count(type4) AS countAlias
        RETURN {dataList: collectionAlias, totalCount: countAlias} AS type2_type4_type4_info 
    }
    WITH collect(type2{.*, _id: id(type2), type3: type2_type3_type3_info, type4: type2_type4_type4_info})[0..6] AS collectionAlias, count(type2) AS countAlias
    RETURN {dataList: collectionAlias, totalCount: countAlias} AS type1_type2_alias2_info 
}
CALL {
    WITH type1
    MATCH
    (type2:`type2`)-[:`RELATES_TO` {fieldName: 'type3'}]->(type3:`type3`),
    (type2:`type2`)-[:`RELATES_TO` {fieldName: 'type4'}]->(type4:`type4`),
    (type1:`type1`)-[:`RELATES_TO` {fieldName: 'type3'}]->(type3:`type3`),
    (type1)-[:`RELATES_TO` {fieldName: 'type4'}]->(type4:`type4`)
    WITH DISTINCT type2 ORDER BY id(type2) ASC
    WITH collect(type2{.*, _id: id(type2)})[0..6] AS collectionAlias, count(type2) AS countAlias
    RETURN {dataList: collectionAlias, totalCount: countAlias} AS type1_type2_alias3_info 
}
RETURN type1{.*, _id: id(type1), `alias2:joinReferences`: type1_type2_alias2_info, `alias3:joinReferences`: type1_type2_alias3_info} LIMIT 6

格式化后:

MATCH (type1:`type1` {field1: 'value1', type: 'type1'})
WHERE (type1.deleted = false OR type1.deleted IS NULL)
CALL {
  WITH type1
  MATCH
    (type2:`type2`)-[:`RELATES_TO` {fieldName: 'type3'}]->(type3:`type3`),
    (type2:`type2`)-[:`RELATES_TO` {fieldName: 'type4'}]->(type4:`type4`),
    (type1:`type1`)-[:`RELATES_TO` {fieldName: 'type3'}]->(type3:`type3`),
    (type1)-[:`RELATES_TO` {fieldName: 'type4'}]->(type4:`type4`)
  WHERE type2.startDate = '2022-03-18'
  WITH DISTINCT type2 ORDER BY id(type2) ASC
  CALL {
    WITH type2
    MATCH (type2:`type2`)-[:`RELATES_TO` {fieldName: 'type3'}]->(type3:`type3` {field1: 'value1'})
    WITH DISTINCT type3 ORDER BY id(type3) ASC
    WITH collect(type3{.*, _id: id(type3)})[0..6] AS collectionAlias, count(type3) AS countAlias
    RETURN {dataList: collectionAlias, totalCount: countAlias} AS type2_type3_type3_info
  }
  CALL {
    WITH type2
    MATCH (type2:`type2`)-[:`RELATES_TO` {fieldName: 'type4'}]->(type4:`type4` {field1: 'value1'})
    WITH DISTINCT type4 ORDER BY id(type4) ASC
    WITH collect(type4{.*, _id: id(type4)})[0..6] AS collectionAlias, count(type4) AS countAlias
    RETURN {dataList: collectionAlias, totalCount: countAlias} AS type2_type4_type4_info
  }
  WITH collect(type2{.*, _id: id(type2), type3: type2_type3_type3_info, type4: type2_type4_type4_info})[0..6] AS collectionAlias, count(type2) AS countAlias
  RETURN {dataList: collectionAlias, totalCount: countAlias} AS type1_type2_alias2_info
}
CALL {
  WITH type1
  MATCH
    (type2:`type2`)-[:`RELATES_TO` {fieldName: 'type3'}]->(type3:`type3`),
    (type2:`type2`)-[:`RELATES_TO` {fieldName: 'type4'}]->(type4:`type4`),
    (type1:`type1`)-[:`RELATES_TO` {fieldName: 'type3'}]->(type3:`type3`),
    (type1)-[:`RELATES_TO` {fieldName: 'type4'}]->(type4:`type4`)
  WITH DISTINCT type2 ORDER BY id(type2) ASC
  WITH collect(type2{.*, _id: id(type2)})[0..6] AS collectionAlias, count(type2) AS countAlias
  RETURN {dataList: collectionAlias, totalCount: countAlias} AS type1_type2_alias3_info
}
RETURN type1{.*, _id: id(type1), `alias2:joinReferences`: type1_type2_alias2_info, `alias3:joinReferences`: type1_type2_alias3_info} LIMIT 6

总结:

CyFormatter通过简化Cypher查询的格式化过程,帮助开发者提高工作效率。无论是复杂的查询还是简单的操作,CyFormatter都能让您的Cypher查询更加清晰、易于管理和使用。

本站所有资源都是由网友投稿发布,或转载各大下载站, 请自行检测软件的完整性!

本站所有资源仅供学习与参考,请勿用于商业用途,否则 产生的一切后果将由您自己承担!

如有侵权请联系我们删除下架,联系方式:study_golang@163.com

最新教程

查看更多
  • Golang云原生架构师课程
    Golang云原生架构师课程
    Go是一门并发支持、垃圾回收的编译型系统编程语言;本课程转载自哔哩哔哩:https://www.bilibili.com/video/BV1Mh411M7A
  • MySQL数据管理之备份恢复案例解析视频教程
    MySQL数据管理之备份恢复案例解析视频教程
    《MySQL数据管理之备份恢复案例解析视频教程》MySQL是一个开放源码的小型关联式数据库管理系统,目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
  • MySQL索引优化解决方案
    MySQL索引优化解决方案
    本套课程是根据MySQL索引的设计理念与数据结构、索引使用场景、索引分类、索引运用场景、索引性能分析、查询优化、MySQL索引的慢查询等组成,主要讲述了MySQL索引优化的解决方案,非常适合有MySQL使用基础或者有一定工作经验的同学。课程讲解了解决大数量查询慢的问题、如何编写一个高效的SQL、查询语句应该如何优化、索引的实现原理是什么、索引又应该如何优化...等诸多SQL索引优化的难点和面试点。
  • 极客学院Docker视频教程
    极客学院Docker视频教程
    Docker是PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于go语言并遵从Apache2.0协议开源。Docker自2013年以来非常火热,无论是从github上的代码活跃度,还是各大厂商的支持,都使Docker成为了时下最受关注的技术,甚至微软都声称在下一代WindowsServer中集成对Docker的支持。所以我们收集了《极客学院Docke
  • Golang进阶实战编程
    Golang进阶实战编程
    本课程是在《Go语言基础视频》基础之上录制的,是Go语言基础的后半部分。包括包的管理,IO操作,Go语言最大的亮点:高并发,goroutine,channel,反射等。本视频主要为了帮助Go语言的初学者,从零到一的快速入门。学完本套课程,可以学会如果通过包管理Go项目,并发模型,以及并发实现,channel通道如何传递数据,反射等等。
  • JavaScript极速入门
    JavaScript极速入门
    本套课程将帮助大家迅速掌握JavaScript这门高端的、动态的、弱类型编程语言。知识点简单明了,让你学习0压力,适合新手观看学习......