Neo4j apoc一些简单常用方法

apoc.convert.fromJsonList()-字符串数组转json格式

apoc.convert.fromJsonMap()-字符串json转json格式

apoc.convert.toSet(list)- list去重

RETURN apoc.convert.fromJsonList("['xxx']")

RETURN apoc.convert.fromJsonMap('{"product": {"name": "Bloom"}}', '$.product') AS output; //转化成json并提取指定key的值

RETURN apoc.convert.toSet([1,2,3,2]) AS output; //[1, 2, 3]

apoc.convert.getJsonProperty()- 提取字符串json内的值

CREATE (:Person {json:'{a:[1,2,3]}'});

RETURN apoc.convert.getJsonProperty(p, "json") AS output; //{a: [1, 2, 3]}

RETURN apoc.convert.getJsonProperty(p, "json", "$.a") AS output; // [1, 2, 3]
            
create (n:JsonPathNode{prop:'{"columns":{"col2":{"_id":"772col2"}}}'})
RETURN apoc.convert.getJsonProperty(n, 'prop', '$..columns',  ['ALWAYS_RETURN_LIST']) AS output; //指定返回格式
                                                               // [ {"col2": { "_id": "772col2" }}, null, null ]

apoc.coll.contains(list,str) 判断str是否存在list中,返回true和false

RETURN apoc.coll.contains([1,2,3,4,5], 4) AS output; //单个匹配

RETURN apoc.coll.contains([1,2,3,4,5], [3,7]) AS output; //全部匹配

RETURN apoc.coll.containsAll([1,2,3,4,5], [4,1]) AS output; //同上,全部匹配
MATCH (p:Cluster{name:'pc-d9j498obo0vu97c6q.rwlb.ap-southeast-5.rds.aliyuncs.com'})
RETURN apoc.coll.contains(apoc.convert.fromJsonList(p.instance), 'pc-d9j498obo0vu97c6q.rwlb.ap-southeast-5.rds.aliyuncs.com') AS output, apoc.convert.fromJsonList(p.instance), p.instanc

apoc.coll.containsDuplicates(list) -判断list中是否有重复元素,返回true和false

RETURN  apoc.coll.containsDuplicates([1,3,5,7,9,9]) AS output;

RETURN apoc.coll.duplicates([1,3,5,7,9,9]) AS output; //返回重复项列表 [9]

apoc.create.uuids(count Integer)-生成uuid

RETURN apoc.create.uuid() as output; // "3bfef4ba-564e-4ce1-b3af-616651f90aff"

CALL apoc.create.uuids(3); //生成多个

CALL和YIEDLD

CALL用于调用内置过程、自定义过程或函数,并对其返回的结果进行处理
通过使用YIELD关键字,可以指定要从过程或函数返回的结果

CALL db.labels()
YIELD label
CALL apoc.cypher.run("MATCH (:" + label + ") RETURN count(*) AS count", {})
YIELD value
RETURN label, value.count AS count, value

UNWIND关键字用于展开列表或集合,并将其元素作为独立的行返回

WITH ['新增标签2', '新增标签3', '新增标签1'] AS names
UNWIND names AS name
MATCH (p:Tag {name: name})
RETURN p

8.时间的转换

//单位的转换
RETURN apoc.date.convert(30, "minutes", "seconds") as outputInSeconds; // 1800

RETURN datetime().epochSeconds, apoc.date.convert(datetime().epochSeconds, "seconds", "days") as outputInDays // 1685068897 19503

WITH apoc.date.add(datetime().epochMillis, "ms", 10000, "ms") AS output
RETURN outputinMs, datetime({epochMillis: output}) AS datetime; //1604509597386  2020-11-04T17:06:37.386Z

RETURN apoc.date.add(34, "minutes", 1, "hour") AS outputInMinutes; // 94
//格式的转换 date in YYYY-MM-dd  basic_date (yyyyMMdd) date_hour (yyyy-MM-dd’T’HH) date_hour_minute (yyyy-MM-dd’T’HH:mm)
RETURN apoc.date.convertFormat("2020-11-04", "date", "basic_date") AS output; // "20201104"

WITH datetime("2020-11-04T11:23:22").epochMillis AS datetime
RETURN apoc.date.format(datetime, "ms", "yyyy-MM-dd") AS output; // "2020-11-04"

WITH datetime("2020-11-04T11:23:22+00:00").epochMillis AS datetime
RETURN apoc.date.format(datetime, "ms", "yyyy-MM-dd'T'HH:mm:ssz", "Australia/Sydney") AS output; // "2020-11-04T22:23:22AEDT"

RETURN apoc.date.parse("20201104", "ms", "yyyyMMdd") AS outputInMs; //1604448000000

9.对比节点的差异(只能比较节点)

MATCH (joe:Tag {name: "新增标签2"})
MATCH (ryan:Tag {name: "新增标签5"})
RETURN apoc.diff.nodes(joe, ryan) AS output;

apoc.do.case()- case条件执行

//只会执行条件为真后的句子,都为假则执行最后的句子
with 10 as v
CALL apoc.do.case([
  v>3,'CREATE (a:Node{name:"A"}) RETURN a AS node',
  v<3, 'CREATE (b:Node{name:"B"}) RETURN b AS node'
  ],
  'CREATE (c:Node{name:"C"}) RETURN c AS node',{})
YIELD value
RETURN value.node AS node;
//(:Node {name: "A"})
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

八届宇宙帅男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值