查找所有Node

MATCH (n) RETURN n

查找所有relations

MATCH p=() --> () RETURN p

通过Id查找Node

match (n) where id(n)=%d return n

通过Id修改Node

  1. match (n) where id(n) = 577
  2. with n
  3. set n.Phones='15705625428'
  4. return n

通过id删除Node

  1. match (n:Bar) where id(n)=385635
  2. delete n

Merge

首先约束一下Bar节点,让no成为它的唯一键
CREATE CONSTRAINT ON (n:Bar) ASSERT n.no IS UNIQUE;

方式一:

  1. merge (n:Bar {address: '未知网吧地址',name: '未知网吧名1',no: '63222210900006',type: 'Bar'})
  2. return n.no

如果库中已经存在相同节点(这里说的相同,指的是所有属性值都相同),则不进行任何操作。

假如把上面语句中的name值改成未知网吧名2,那么就会报错,那么就需要使用方式二更新name值(如果没有前置的约束条件,则会创建新节点)

方式二:

  1. merge (n:Bar {no: '63222210900006',type: 'Bar'})
  2. set n.address='未知网吧地址1',n.name='未知网吧名1'
  3. return n.no

如果库中存在 no=63222210900006 的记录,上面的语句会更新记录值。反之,则会创建。

LOAD CSV

使用示例:

  1. load csv with headers from 'file:///increase/nodes/bar.csv' as line
  2. 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示例:

  1. address,name,no,type
  2. 未知网吧地址,未知网吧名,63222210900006,Bar

排序

  1. MATCH (n:Case) RETURN n order by n.larq desc LIMIT 25

范围查找

  1. MATCH (n:Case) where n.larq > '2017-01-01' and n.larq < '2018-01-01' RETURN n
  1. MATCH path=(p:Hotel)-[r:`住宿`*2]-(other) where p.no='6301020056' \
  2. RETURN p,other,path;
  3. MATCH path=(p:Hotel)-[r:`住宿`]-(other) where [time in r.Date where time < 1483632000] \
  4. and p.no='6301020056' RETURN p,other,path;
  1. MERGE (a:Person{name:”a”})
  2. MERGE (b:Person{name:”b”})
  3. MERGE (c:Person{name:”c”})
  4. MERGE (d:Person{name:”d”})
  5. MERGE (a)-[:LOVE{time:1572879536}]->(b) 2019-11-04 22:58:56
  6. MERGE (b)-[:LOVE{time:1570201136}]->(a) 2019-10-04 22:58:56
  7. MERGE (c)-[:LOVE{time:1515070736}]->(d) 2018-01-04 20:58:56
  8. MERGE (d)-[:LOVE{time:1533394736}]->(c) 2018-08-04 22:58:56
  9. MATCH p=(n)-[r]->()
  10. WHERE [item in r.time WHERE item < 1572620336]
  11. RETURN DISTINCT(p)