我用两个类的简单数据库尝试了你的例子:
- 以属性 billDate 作为日期时间的 Bill(扩展 V);
- nextBill(扩展 E)。
用这个查询
create vertex Bill set billDate=sysdate(), in_nextBill=(select @rid from Bill where billDate in (select max(billDate) from Bill))
您可以同时创建账单和之前提到的边。
已编辑
我创建了一个 Javascript 函数,它删除两条记录之间的边缘并在前两条记录之间插入一条新记录(具有相对边缘)。该函数接受三个输入参数: * date1 : datetime format
; *日期2 :;datetime format
* newBillDate:datetime format
是您要在前两个之间插入的新账单日期;
var g=orient.getGraph();
var d1=g.command('sql','select from Bill where billDate in "'+date1+'"');
var d2=g.command('sql','select from Bill where billDate in "'+date2+'"');
var startDate=d1[0];
var endDate=d2[0];
if(endDate.getRecord().field("billDate").getTime()<startDate.getRecord().field("billDate").getTime()){
var temp=endDate;
endDate=startDate;
startDate=temp;
}
var selectEdge=g.command('sql','select from nextBill where in='+endDate.getId()+' and out='+startDate.getId());
g.command('sql','delete edge '+selectEdge[0].getId());
var newIns=g.command('sql','create vertex Bill set billDate="'+newBillDate+'"');
g.commit();
g.command('sql','create edge nextBill from '+startDate.getRecord().getIdentity()+' to '+newIns.getRecord().getIdentity());
g.command('sql','create edge nextBill from '+newIns.getRecord().getIdentity()+' to '+endDate.getRecord().getIdentity());