2016-07-09 14 views
0

die folgende Abfrage von fluent query interface das ist Angenommen, als von v3.x entfernt:Mit Arangodb AQB Wie kommst du aus/toVertices? in einer Abfrage?

var tens = graph._vertices(lst).outEdges().restrict("knows").toVertices() 
.inEdges().restrict("works").fromVertices().inEdges().restrict("owns") 
.fromVertices().toArray(); 

hier lst ist eine einfach eine Liste von Scheitelpunkten aus einer früheren Abfrage erhalten, und die Ecken in lst Beziehungen abgehende Kanten aufweisen können, von denen ist vom Typ knows, und die von diesem zu outEdges darauf Eckpunkte haben eingehende Kanten des Typs works wiederum

wie wäre dies mit AQB geschrieben werden? die beiden (AQB und fluent query interface sollen sich überlappen und deshalb wurde einer entfernt). Iv schaute auf die Dokumentation on github aber im nicht etwas zu sehen, die mit einer Abfrage wie die oben

Antwort

1

Dies ist, was ich habe gearbeitet, so weit helfen würde:

db._query("FOR vrt0 in @lst FOR vrt1 in OUTBOUND vrt0 knows FOR vrt2 in 
INBOUND vrt1 works FOR vrt3 in INBOUND vrt2 owns RETURN vtr3",{"@lst": lst }); 

Die Informationen abgerufen entspricht dem, was Ich würde von der entsprechenden fluent query interface erwarten.

1

Sie haben Recht, dass dies in AQB nicht dargestellt werden kann. Wir sind derzeit dabei, AQB zugunsten der aql Template-Handler von ironischen sowohl von dem JavaScript-Treiber unterstützt (arangojs) und ArangoDB 2.8 und höher: https://docs.arangodb.com/3/Manual/Appendix/JavaScriptModules/ArangoDB.html#the-aql-template-string-handler

Mit der Handler Vorlagenzeichenfolge ist es möglich, beliebige AQL-Abfragen zu schreiben in ArangoDB 3. Wenn ich es richtig verstehe, sollte Ihre fließende Abfrage in etwa so lauten:

db._query(aql` 
    FOR vertex IN ${lst} 
    FOR v1 IN OUTBOUND vertex knows 
    FOR v2 IN INBOUND v1 works 
    FOR v3 IN INBOUND v2 owns 
    RETURN v3 
`).toArray()