您的位置:首页 > 其它

neo4j使用

2017-08-02 08:48 337 查看
一、创建关系,并且关系有属性

MATCH (a:Person{id:"/user/vpe.cripac/new2/20131223141032-20131223141628/d3fba52d-c1a5-4aa0-8c95-6be46892688f/4"}),
(b:Person{id:"/user/vpe.cripac/new2/20131223141032-20131223141628/d3fba52d-c1a5-4aa0-8c95-6be46892688f/2"})
CREATE (a)-[r:DO_SHOPPING_WITH{shopdate:"12/12/2014",price:55000}]->(b)
RETURN r


其中a,b,r这样的标签名称,貌似只在当前的语句中生效,而DO_SHOPPING_WITH这种关系的名称也是可以重复的

而且关系虽然在创建时有方向,但是在查询时,可以直接把双向关系都查询出来

MATCH (a:Person)-[:DO_SHOPPING_WITH]-(b:Person)return a,b
MATCH (b:Hour{hour:2013122011})-[:HAS_MIN]- (c:Minute)-[:INCLUDE_PERSON]- (d:Person) RETURN b,c,d order by c.start


http://blog.csdn.net/hwz2311245/article/details/54602706

同时,在创建关系时,如果没有箭头
MERGE  (a)-[r:Similarity]-(b)
,则在MERGE 的情况下,第二次就不会重复插入一条边,表面上看确实没有,但实际中,好像是存在第二条边的关系的,这是个问题


二、添加属性

MATCH (dc:Person{id:"/user/vpe.cripac/new2/20131223141032-20131223141628/d3fba52d-c1a5-4aa0-8c95-6be46892688f/2"})
SET dc.atm_pin = 3456
RETURN dc


创建边,再次不需要创建,向边添加属性

MATCH (a:Person {trackletID: {id1}}), (b:Person {trackletID: {id2}}) MERGE (a)-[r:Similarity]->(b) set r.Minute={Minute},r.Hour=1;


三、在neo4j中,每一个节点,会自动有一个唯一Id。

查找id为1的节点,有两种方式:

Start  n = node(1)  return  n
Match  (n:people)  where  ID(n)=1  return  n
Match  (a:Person {trackletID: "CAM01-20140226110701-20140226111249_tarid117"}) where id(a) in
[96999,96997,96989,97003,97005,96987] delete a


MERGE (a:Person {trackletID: "CAM01-20140226110701-20140226111249_tarid113"})-[r:Similarity]->(b:Person

{trackletID: "CAM01-20140226110701-20140226111249_tarid111"}) set r.Minute=5


这样不是查找到节点后创建边,而是创建了新的节点,只有trackletID属性,同时创建了边

四、neo4j sql语法

http://blog.csdn.net/free8666/article/details/52909523

五、limit 的限制针对的是范围小的节点,比如

MATCH (a:Hour)-[:HAS_MIN]- (b:Minute) RETURN b,a limit 5


查出来的是b是5个

MATCH (a:Hour)-[r1:HAS_MIN]- (b:Minute) -[r2:INCLUDES_PERSON]-(c:Person)RETURN a,b,c limit 5


两条边必须都要有标记才行

六、索引

CREATE INDEX ON :Person (trackletID)
DROP INDEX ON :Person (dataTypetrackletID)


七、IN

MATCH (a:Person {trackletID: "CAM01-20140226113013-20140226113601_tarid55"}),(b:Person) where b.trackletID in

["CAM01-20140226113013-20140226113601_tarid54","CAM01-20140226113601-20140226114149_tarid48","CAM01-

20140226114741-20140226115336_tarid81"] MERGE (a)-[r:Similarity]->(b) set r.Minute in[1,2,3] return a,b


八、null

where r.Minute<>'null'
r.Minute is not null
r.Minute is null


九、删除重复数据

MATCH (n:Employee {name: “Govind Singh”})
WITH n
SKIP 1
DELETE n


十、remove

删除节点或关系的标签

删除节点或关系的属性

https://www.w3cschool.cn/neo4j/neo4j_cql_remove.html

十一:模糊查询

MATCH (n:Person) where n.videoURL =~'CAM01.*' RETURN count(n)
MATCH (n:Person) where n.name=~'.*Tom.*' RETURN n LIMIT 25
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  neo4j