查找所有Node
MATCH (n) RETURN n
查找所有relations
MATCH p=() --> () RETURN p
通过Id查找Node
match (n) where id(n)=%d return n
通过Id修改Node
match (n) where id(n) = 577
with n
set n.Phones='15705625428'
return n
通过id删除Node
match (n:Bar) where id(n)=385635
delete n
Merge
首先约束一下Bar节点,让no成为它的唯一键CREATE CONSTRAINT ON (n:Bar) ASSERT n.no IS UNIQUE;
方式一:
merge (n:Bar {address: '未知网吧地址',name: '未知网吧名1',no: '63222210900006',type: 'Bar'})
return n.no
如果库中已经存在相同节点(这里说的相同,指的是所有属性值都相同),则不进行任何操作。
假如把上面语句中的name值改成未知网吧名2,那么就会报错,那么就需要使用方式二更新name值(如果没有前置的约束条件,则会创建新节点)
方式二:
merge (n:Bar {no: '63222210900006',type: 'Bar'})
set n.address='未知网吧地址1',n.name='未知网吧名1'
return n.no
如果库中存在 no=63222210900006 的记录,上面的语句会更新记录值。反之,则会创建。
LOAD CSV
使用示例:
load csv with headers from 'file:///increase/nodes/bar.csv' as line
create (:Bar {address: line.address,name: line.name,no: line.no,type: line.type})
解析:
from + 文件地址:文件地址以 file:///
开始,后面跟的路径是相对于neo4j的import目录
更改默认的import目录:打开neo4j的conf文件,修改dbms.directories.import=import
bar.csv示例:
address,name,no,type
未知网吧地址,未知网吧名,63222210900006,Bar
排序
MATCH (n:Case) RETURN n order by n.larq desc LIMIT 25
范围查找
MATCH (n:Case) where n.larq > '2017-01-01' and n.larq < '2018-01-01' RETURN n
MATCH path=(p:Hotel)-[r:`住宿`*2]-(other) where p.no='6301020056' \
RETURN p,other,path;
MATCH path=(p:Hotel)-[r:`住宿`]-(other) where [time in r.Date where time < 1483632000] \
and p.no='6301020056' RETURN p,other,path;
MERGE (a:Person{name:”a”})
MERGE (b:Person{name:”b”})
MERGE (c:Person{name:”c”})
MERGE (d:Person{name:”d”})
MERGE (a)-[:LOVE{time:1572879536}]->(b) 2019-11-04 22:58:56
MERGE (b)-[:LOVE{time:1570201136}]->(a) 2019-10-04 22:58:56
MERGE (c)-[:LOVE{time:1515070736}]->(d) 2018-01-04 20:58:56
MERGE (d)-[:LOVE{time:1533394736}]->(c) 2018-08-04 22:58:56
MATCH p=(n)-[r]->()
WHERE [item in r.time WHERE item < 1572620336]
RETURN DISTINCT(p)