MATCH (n:Device) <-[r:BINDDEVICE] - (m:User) where n.deviceId = "yp_waigu" return count(m)
node
Neo4j是一个嵌入式,基于磁盘的,支持完整事务的Java持久化引擎,它在图(网络)中而不是表中存储数据。算法
Neo4j提供了大规模可扩展性,在一台机器上能够处理数十亿节点/关系/属性的图,能够扩展到多台机器并行运行。相对于关系数据库来讲,图数据库善于处理大量复杂、互链接、低结构化的数据,这些数据变化迅速,须要频繁的查询——在关系数据库中,这些查询会致使大量的表链接,所以会产生性能上的问题。数据库
Neo4j重点解决了拥有大量链接的传统RDBMS在查询时出现的性能衰退问题。经过围绕图进行数据建模,Neo4j会以相同的速度遍历节点与边,其遍历速度与构成图的数据量没有任何关系。数组
此外,Neo4j还提供了很是快的图算法、推荐系统和OLAP风格的分析,而这一切在目前的RDBMS系统中都是没法实现的。
网络
Neo4j 中最基本的概念是节点(node)和关系(relationship)。性能
节点表示实体,由org.neo4j.graphdb.Node
接口来表示。在两个节点之间,能够有不一样的关系。code
关系由org.neo4j.graphdb.Relationship
接口来表示。每一个关系由起始节点、终止节点和类型等三个要素组成。起始节点和终止节点的存在,说明了关系是有方向,相似于有向图中的边。不过在某些状况,关系的方向可能并无意义,会在处理时被忽略。全部的关系都是有类型的,用来区分节点之间意义不一样的关系。在建立关系时,须要指定其类型。关系的类型由 org.neo4j.graphdb.RelationshipType
接口来表示。接口
节点和关系均可以有本身的属性。每一个属性是一个简单的名值对。属性的名称是 String
类型的,而属性的值则只能是基本类型、String
类型以及基本类型和 String
类型的数组。一个节点或关系能够包含任意多个属性。事务