neo4j
tinkerpop:Apache
geabase:阿里
简单使用neo4j:
下载安装。概念:
(1)Nodes(节点)
(2)Relationships(关系)
(3) Properties(属性)
(4) Labels(标签)
(5) Traversal(遍历)
(6) Paths(路径)
(7) Schema(模式,类似存储数据的结构)
Indexes(索引)
Constraints(约束)
demo使用:
查询,更新
新增节点:
CREATE (n:Person { name: 'Hi', title: 'Developer' }) return n;
CREATE (n:Person { name: 'Hello', title: 'Developer' }) return n;
CREATE (n:Person { name: 'Hi-2', title: 'Developer' }) return n;
CREATE (n:Person { name: 'Hello-2', title: 'Developer' }) return n;
CREATE (n:Person { name: 'Vic', title: 'Developer' }) return n;
CREATE (n:Person { name: 'Andres', title: 'Developer' }) return n;
match(n:Person{name:"Vic"}),(m:Person{name:"Andres"}) create (n)<-[r:Friend]-(m) return r;
match(n:Person{name:"Andres"}),(m:Person{name:"Vic"}) create (n)<-[r:Friend]-(m) return r;
match(n:Person{name:"Hello"}),(m:Person{name:"Vic"}) create (n)<-[r:Friend]-(m) return r;
match(n:Person{name:"Hi"}),(m:Person{name:"Hello"}) create (n)<-[r:Friend]-(m) return r;
match(n:Person{name:"Vic"}),(m:Person{name:"Andres"}) create (n)<-[r:Friend]-(m) return r;
MATCH (n)-[:Friend* ..3]->(r)
return count(n)
MATCH (n)-[* 1..3]->(r)
return n
MATCH ret=(n)-[:Friend* ..3]->(r) return ret
相互为朋友的:Error
MATCH (n)-[:Friend* ..3]->(r)
and (r)-[:Friend* ..3]->(n) return n
MATCH (n)-[:Friend* ..3]->(r)
where (r)-[:Friend* ..3]->(n) return n
MATCH p=shortestPath(
(bacon:Person {name:"Hello"})-[*]-(meg:Person {name:"Vic"})
)
RETURN p
MATCH (n)-[:Friend]->(r)
return max(length(n.name)) as cnt
MATCH (n)-[:Friend]->(r)
with max(length(n.name)) as cnt
match(n)-[:Friend]->(x) where length(n.name)=cnt return n,x
安装tinkerpop
apache 下载apache-tinkerpop-gremlin-console-3.3.4-bin.zip
解压,命令行执行./gremlin.sh 小鬼开始了..
gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().filter(label().is('person'))
==>v[1]
==>v[2]
==>v[4]
==>v[6]
gremlin> g.V(1).out().map(values('name'))
==>lop
==>vadas
==>josh
gremlin> g.V().hasLabel('person').sideEffect(System.out.&println)
v[1]
==>v[1]
v[2]
==>v[2]
v[4]
==>v[4]
v[6]
==>v[6]
gremlin> g.V().branch(values('name')).
......1> option('marko', values('age')).
......2> option(none, values('name'))
==>29
==>vadas
==>lop
==>josh
==>ripple
==>peter
gremlin> g.V().out('created').hasNext()
==>true
gremlin> g.V().out('created').next()
==>v[3]
gremlin> g.V().out('created').next(2)
==>v[3]
==>v[5]
gremlin> g.V().out('created').next(2)
==>v[3]
==>v[5]
gremlin> g.V(1).as('a').out('created').in('created').where(neq('a')).
......1> addE('co-developer').from('a').property('year',2009)
==>e[13][1-co-developer->4]
==>e[14][1-co-developer->6]
gremlin>