2017-01-01 1 views
0

Est-il possible de créer des arêtes en spécifiant des documents qui peuvent exister ou non, et de les créer quand elles ne le sont pas?Est-il possible de créer des arêtes et des sommets simultanément dans ArangoDB

Par exemple, si je lance une requête comme:

INSERT {_to: 'docs/something', _from: 'docs/other'} IN edges 

Si l'docs/quelque chose ou docs/autres n'existent pas encore, je vais une erreur. Y at-il une option que je pourrais passer qui créerait docs/quelque chose et docs/autre (comme un objet vide, peut-être) si elles n'existaient pas?

Note: Je peux faire une importation en vrac et créer des arêtes sans documents - _To et/ou _de simplement conduire à nulle part - mais je préfère créer un document vierge

Répondre

1

L'une des caractéristiques des graphiques Managed est, qu'il assure l'intégrité des graphes. Ainsi, l'utilisation de the edge management facility se terminera dans ArangoDB ne permettant pas l'insertion d'arêtes pendantes. Cependant, la fonctionnalité graphique ArangoDBs est superposée sur la fonctionnalité du document. La fonctionnalité de document ne garantit pas l'intégrité des graphes; donc inserting edges referencing non existant vertices is possible this way et votre exemple de requête fonctionnera si la collection de bord existe.

Cependant, quoting the insert documentation:

Each INSERT operation is restricted to a single collection, 
and the collection name must not be dynamic. 
Only a single INSERT statement per collection is allowed per AQL query, 
and it cannot be followed by read operations that access 
the same collection, by traversal operations, 
or AQL functions that can read documents. 

Alors vous ne serez pas en mesure de créer des sommets dynamiquement avec AQL dans la même requête. Avec ArangoDB 2.8, la collection de vertex doit exister en premier.