arangodb官网学习(自总结)

arangodb:
        命名图形
        filter边缘文档
        多边缘集合
        文档集合(也称为顶点集合)
        边缘集合(也称为关系集合)

参数:http://blog.csdn.net/yuzongtao/article/details/76061897

        
        
关系的指向:(OUTBOUND:_from→ _to,INBOUND:_from← _to,ANY:_from ←→ _to)

匿名图和命名图区别:匿名图不具有描述哪个顶点集合通过哪个边集合连接的边定义

只想遍历特定类型的边:两种方式
        第一种方式(将对每条edges进行比较[cpu占用率较高]):        
                    边缘文档中的属性-即type        FILTER e.type = "friends"
        第二种方式(某种情况下效率更高):                        
                    
                    
例子:
    所有扮演“电影1”或“电影2”的演员
    db._query("FOR x IN ANY 'movies/TheMatrix' actsIn OPTIONS {bfs: true, uniqueVertices: 'global'} RETURN x._id").toArray();
    
    
    db._query("FOR x IN UNION_DISTINCT (
                        (FOR y IN ANY 'movies/TheMatrix' actsIn OPTIONS {bfs: true, uniqueVertices: 'global'} RETURN y._id), 
                        (FOR y IN ANY 'movies/TheDevilsAdvocate' actsIn OPTIONS {bfs: true, uniqueVertices: 'global'} RETURN y._id)) 
                        RETURN x").toArray();
                        
    所有在“电影1”和“电影2”中扮演角色的演员?                
    db._query("FOR x IN INTERSECTION (
                        (FOR y IN ANY 'movies/TheMatrix' actsIn OPTIONS {bfs: true, uniqueVertices: 'global'} RETURN y._id), 
                        (FOR y IN ANY 'movies/TheDevilsAdvocate' actsIn OPTIONS {bfs: true, uniqueVertices: 'global'} RETURN y._id)) 
                        RETURN x").toArray();
    
    “actor1”和“actor2”之间的所有常见电影?
    db._query("FOR x IN INTERSECTION (
                        (FOR y IN ANY 'actors/Hugo' actsIn OPTIONS {bfs: true, uniqueVertices: 'global'} RETURN y._id), 
                        (FOR y IN ANY 'actors/Keanu' actsIn OPTIONS {bfs: true, uniqueVertices: 'global'} RETURN y._id)) 
                        RETURN x").toArray();
                        
    所有在3部或更多电影中演出的演员?
    db._query("FOR x IN actsIn COLLECT actor = x._from WITH COUNT INTO counter FILTER counter >= 3 RETURN {actor: actor, movies: counter}").toArray();
    
    所有有6个演员参演的电影?
    db._query("FOR x IN actsIn COLLECT movie = x._to WITH COUNT INTO counter FILTER counter == 6 RETURN movie").toArray();
    
    电影演员人数?
    db._query("FOR x IN actsIn COLLECT movie = x._to WITH COUNT INTO counter RETURN {movie: movie, actors: counter}").toArray()
    
    演员的电影数量?
    db._query("FOR x IN actsIn COLLECT actor = x._from WITH COUNT INTO counter RETURN {actor: actor, movies: counter}").toArray();
    
    
    演员在2005年至2010年之间演出的电影数量?
    该查询是多模型数据库实际发光的位置。首先我们希望在生产中使用它,所以我们在一年中设置了skiplistindex。这允许执行2005至2010年之间的快速范围查询。
    db.actsIn.ensureSkiplist("year")
    
    db._query("FOR x IN actsIn FILTER x.year >= 1990 && x.year <= 1995 COLLECT actor = x._from WITH COUNT INTO counter 
    RETURN {actor: actor, movies: counter}").toArray()
    
    
图函数:
    从边缘获取顶点:graph._fromVertex(edgeId)
    
    获取顶点到边的:graph._toVertex(edgeId)
    
    _neighbors(获取示例定义的顶点的所有邻居):graph._neighbors(vertexExample, options)
            direction:边缘的方向。可能的值是OUTBOUND,INBOUND和ANY(默认)。
            edgeExamples:过滤边缘,请参阅示例的定义
            neighborExamples:过滤邻居顶点,请参阅示例的定义
            edgeCollectionRestriction:一个或一列边缘集合名称,应被视为在路径上。
            vertexCollectionRestriction:一个或一系列顶点集合名称,应在中间顶点步骤中考虑。
            minDepth:定义到邻居的最小中间步数(默认值为1)。
            maxDepth:定义到邻居的最大中间步数(默认值为1)。
            
    _commonNeighbors(获取示例定义的顶点的所有常见邻居):        graph._commonNeighbors(vertex1Example, vertex2Examples, optionsVertex1, optionsVertex2)
            
    _countCommonNeighbors(获取示例定义的顶点的公共邻居数量):    graph._countCommonNeighbors(vertex1Example, vertex2Examples, optionsVertex1, optionsVertex2)
    
    _commonProperties(获取共享公共属性的图的顶点):    graph._commonProperties(vertex1Example, vertex2Examples, options)
    
    _countCommonProperties(获取共享公共属性的图的顶点数量):graph._countCommonProperties(vertex1Example, vertex2Examples, options)
    
    _paths(_paths函数返回图的所有路径):    
            direction:边缘的方向。可能的值是any, inbound和outbound(默认)。
            followCycles(可选):如果设置为true,则查询会在图中显示循环,默认为false。
            minLength(可选):定义路径必须返回的最小长度(默认值为0)。
            maxLength(可选):定义路径必须返回的最大长度(默认值为10)
    _最短的路径:graph._shortestPath(startVertexExample, endVertexExample, options)
            direction:边缘的方向为一个字符串。可能的值是outbound,inbound和any(默认)。
            edgeCollectionRestriction:一个或多个边缘集合名称。只有来自这些集合的边缘才会被视为路径。
            startVertexCollectionRestriction:一个或多个顶点集合名称。只有来自这些集合的顶点才会被视为路径的起始顶点。
            endVertexCollectionRestriction:一个或多个顶点集合名称。只有来自这些集合的顶点才会被视为路径的结束顶点。
            weight:包含长度的边的属性的名称作为字符串。
            defaultWeight:仅用于选项权重。如果一个边没有名称为定义在选项权重中的属性,则此默认值将用作长度。如果未提供默认值,则默认值为正无穷大,因此路径无法计算
    
    _distanceTo(返回图中的所有路径和距离):
            graph._distanceTo(startVertexExample, endVertexExample, options) 这个函数是graph._shortestPath的一个包装。它不会返回实际路径,而只会返回两个顶点之间的距离

猜你喜欢

转载自blog.csdn.net/AinUser/article/details/81296142