neo4j使用

来源:互联网 发布:强子纹身器材淘宝 编辑:程序博客网 时间:2024/05/21 17:04

一、创建关系,并且关系有属性

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,bMATCH (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 = 3456RETURN 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  nMatch  (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 nullr.Minute is null

九、删除重复数据

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

十、remove
删除节点或关系的标签
删除节点或关系的属性
https://www.w3cschool.cn/neo4j/neo4j_cql_remove.html