Neo4j开发总结

目录

1、查看两个节点之间的关系使用:type()函数

2、DISTINCT()去重函数注意:该函数要放在RETURN()后面,并且后面加逗号(,).放在最后会报错

3、查询几度关系数据

4、查询两个节点间的所有关系(不确定关系)

5、java代码中模糊检索Neo4j

6、case、when

7、处理字符串转数字

8、分页limit:对Neo4j中通过union后结果进行分页(教程:需要安装apoc插件;jar包地址:GitHub)

9、Neo4j内存配置


 

1、查看两个节点之间的关系使用:type()函数

MATCH (:paper)-[r]->(:field_sub) 
RETURN type(r)

2、DISTINCT()去重函数注意:该函数要放在RETURN()后面,并且后面加逗号(,).放在最后会报错

//正确代码
MATCH (pe:person)-[:write_paper]->(pa:paper)
RETURN
	DISTINCT(pe.nationality),
	pe.nationality AS country,
    COUNT(pa)
//报错代码
MATCH (pe:person)-[:write_paper]->(pa:paper)
RETURN
	pe.nationality AS country,
    COUNT(pa),
    DISTINCT(pe.nationality)

//报错信息
Neo.ClientError.Statement.SyntaxError
Neo.ClientError.Statement.SyntaxError: Unknown function 'DISTINCT' (line 5, column 5 (offset: 99))
"    DISTINCT(pe.nationality)"
     ^

3、查询几度关系数据

MATCH p=(pe1:Person)-[*1..4]-(pe2:Person) RETURN p LIMIT 25

4、查询两个节点间的所有关系(不确定关系)

MATCH (o1:organization)-- (p:project) -- (o2:organization) 
WHERE o1.orgId = {orgId1}
AND p.startYear >= {startYear} AND p.startYear <= {endYear}
RETURN o2.orgId AS orgId, o2.org_name AS orgName
LIMIT 100

5、java代码中模糊检索Neo4j

#Neo4j图库中查询语句
MATCH (n:DataSet{code:'uci'}) 
WHERE n.name =~ '(?i).*blog.*'
RETURN n.datasetId AS datasetId, n.name as name 
LIMIT 10

#java中查询
MATCH (n:DataSet{code:'uci'}) 
WHERE n.name =~ {name}
RETURN n.datasetId AS datasetId, n.name as name 
LIMIT 10

将((?i).*blog.*)整体作为一个参数传入
代码中提前拼接好:name = "(?i).*" + name + ".*";

6、case、when

                    "MATCH  (org:organization) -[ogor:org_own_reward]->(rd:reward) " +
                        "  	WHERE 	toInteger(subString(ogor.date,0,4)) >= #startYear and toInteger(subString(ogor.date,0,4))<= #endYear  " +
                        "   		and rd.rewardType = '国际科学技术合作奖'  " +
                        "  	RETURN " +
                        "   	case  " +
                        "    		when ogor.type is not null  " +
                        "     			then ogor.type " +
                        "    	else " +
                        "      		'组织'  " +
                        "   	end  " +
                        "   	AS rewardArea,count(ogor) as statis  " +
                        "  	ORDER BY rewardArea ";

7、处理字符串转数字

toInteger(substring(pj.startDate,0,4))

8、分页limit:对Neo4j中通过union后结果进行分页(教程:需要安装apoc插件;jar包地址:GitHub

CALL apoc.cypher.run("
     MATCH (n:Disease) RETURN n.name AS field1, n.desc  AS field2
     ORDER BY n.field1 ASC LIMIT 100
     UNION
     MATCH (n:Symptom) RETURN n.name AS field1, n.name AS field2
     ORDER BY n.field1 ASC LIMIT 100
",{})  yield value
    return value.field1,value.field2
    order by value.field1 limit 100
    @Query("CALL apoc.cypher.run( {cql} ,{}) " +
            "yield value " +
            "RETURN value.achName AS achName, value.psName AS psName, value.psId AS psId, value.influence AS influence, value.achId AS achId " +
            "SKIP {skip} LIMIT {limit}")
    List<Map<String, Object>> queryAwardByPersonId(@Param("cql") String cql,
                                                   @Param("skip") int skip,
                                                   @Param("limit") int limit);

9、Neo4j内存配置

# java heap 初始值 
dbms.memory.heap.initial_size=1g 
# java heap 最大值,一般不要超过可用物理内存的80% 
dbms.memory.heap.max_size=16g 
# pagecache大小,官方建议设为:(总内存-dbms.memory.heap.max_size)/2
dbms.memory.pagecache.size=2g

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

墨咖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值