CyFormatter:Cypher查询语言格式化工具,提升查询效率
CyFormatter是一款专门针对Cypher查询语言设计的格式化工具,能够帮助开发者快速格式化和优化Cypher查询。通过与Cypher QL扩展配合使用,用户可以享受一键操作的便捷体验,将Cypher查询压缩成单行并复制到剪贴板,极大提升了开发效率。
功能特点:
opt shift f
即可格式化您的Cypher查询文档,让代码更加清晰易读。使用要求:
格式化效果展示:
以下是使用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