我正在探索graphDB查询语言。目前正在查看OrientDB查询语言。我想看看一个事务在OrientDB中的结构如何,具有以下结构:
假设我有两个顶点, A 和 QA :
CREATE CLASS A EXTENDS V
CREATE CLASS QA EXTENDS V
A类有一个名为p1 of Integer的属性:
CREATE PROPERTY A.p1 integer
假设A有三个名为a1,a2,a3
的记录,其对应的p1值为a1.p1=2; a2.p1=5; a3.p1=10;
:
INSERT INTO A SET p1 = 2 // call this a1
Created record with RID #11:1
INSERT INTO A SET p1 = 5 // call this a2
Created record with RID #11:2
INSERT INTO A SET p1 = 10 // call this a3
Created record with RID #11:3
并假设我从QA到A有一个名为 isA 的边缘。
CREATE CLASS isA EXTENDS E // it seems that I can not restrict isA records to connect only QA records to A
我想看看以下事务在OrientDB中的样子:
首先: select all A's content where p1 < 6
=&gt;所以我会得到{a1,a2}
秒: for each element in the first query create an element in QA
=&gt;所以我会得到例如{qa1,qa2}
第三:Add records to isA Edge such that they connect elements in QA to their corresponding elements in A;
=&gt;所以,例如,将qa1连接到a1,qa2连接到a2。
似乎所有三个查询都是相互关联的。
我的第1个问题:上述事务(即相互关联的查询集)在OrientDB中会是什么样子?
请注意,A的元素是动态的(在我的系统中不固定),我希望QA元素与A同步,只要A的内容通过上述事务发生变化;例如,如果我将 a4 添加到A并且p1 = 3,并运行上述查询集,我希望在QA中获得一条新记录,比如qa4与 a4相关联