有在OrientDB中没有加入,你不能这样做。查询只接受一个目标。
在图形数据库中,您将关系定义为边,而不是pk/fk和连接。 一旦你有你的边缘,你可以使用SELECT与out()/in()
功能或MATCH遍历他们(http://orientdb.com/docs/2.2.x/SQL-Match.html)
[编辑]这里是如何与OrientDB做一个实际的例子。
假设你有两个顶点类ClassP
和ClassQ
和和边缘类称为ClassE
首先,让我们创建的模式:
CREATE CLASS ClassP EXTENDS V;
CREATE CLASS ClassQ EXTENDS V;
CREATE CLASS ClassE EXTENDS E;
现在让我们用一些数据来填充它:
CREATE VERTEX ClassP SET name = 'foo';
CREATE VERTEX ClassP SET name = 'bar';
CREATE VERTEX ClassP SET id = 1;
CREATE VERTEX ClassP SET id = 2;
并通过边缘连接它们:
/* from "foo" to "1" */
CREATE EDGE ClassE
FROM
(SELECT FROM ClassP WHERE name = 'foo')
TO
(SELECT FROM ClassQ WHERE id = 1)
SET myEdgeProp = 'x';
/* from "foo" to "2" */
CREATE EDGE ClassE
FROM
(SELECT FROM ClassP WHERE name = 'foo')
TO
(SELECT FROM ClassQ WHERE id = 2)
SET myEdgeProp = 'y';
/* from "bar" to "2" */
CREATE EDGE ClassE
FROM
(SELECT FROM ClassP WHERE name = 'bar')
TO
(SELECT FROM ClassQ WHERE id = 2)
SET myEdgeProp = 'z';
现在,我们可以查询数据集如下:
/* get the name of a vertex and all the connected IDs */
SELECT name, out("ClassE").id FROM ClassP WHERE name = 'foo';
或
MATCH
{class:ClassP, as:a, where:(name = 'foo')} -ClassE-> {as:b}
RETURN a.name as name, b.id as id
或
/* return all the details for all the vertices */
MATCH
{class:ClassP, as:a, where:(name = 'foo')} -ClassE-> {as:b}
RETURN $elements
我希望它能帮助
又是什么的aport多模型数据库?如果我们不能同时处理文档和图表?所以不可能测试它有多快我只是总结文档查询和图形查询的时间然后求和? –
恐怕我不明白你的意思...... JOIN不是文档模型的操作......你不需要对文档和图形进行单独的查询,只需编写一个简单的MATCH查询和返回所有你需要的 –
如果不是加入,那么它是什么,我可能会错误地使用该术语。我编辑了排队,说我需要得到的希望,你会帮助它 –