Vue d'ensemble
La clause insert().into()
facilite l'insertion de nouveaux nodes ou edges au sein d'un unique schema.
Syntaxe
// Insert nodes
insert().into(@<schema>).nodes([
{<property1>: <value1>, <property2>: <value2>, ...},
{<property1>: <value1>, <property2>: <value2>, ...}
])
// Insert edges
insert().into(@<schema>).edges([
{<property1>: <value1>, <property2>: <value2>, ...},
{<property1>: <value1>, <property2>: <value2>, ...}
])
- Spécifiez un schema dans la méthode
into()
. - Incluez un ou plusieurs nodes ou edges dans la méthode
nodes()
ouedges()
.- Fournissez des paires clé-valeur de propriétés pour chaque node ou edge enfermées dans
{ }
. - S'il n'y a qu'un seul node ou edge, les crochets extérieurs
[ ]
peuvent être omis.
- Fournissez des paires clé-valeur de propriétés pour chaque node ou edge enfermées dans
- Permet de définir un alias pour la clause, le type de donnée étant soit NODE soit EDGE.
Insertion de nodes :
- Aucune propriété n'est obligatoire à fournir.
- Si la propriété identifiant unique
_id
ou_uuid
est manquante, sa valeur sera générée par le système. - Les valeurs des propriétés personnalisées manquantes seront
null
.
Insertion de edges :
- Les propriétés
_from
et_to
(ou_from_uuid
et_to_uuid
) doivent être fournies pour spécifier les nodes de départ et d'arrivée du edge. Les autres propriétés sont optionnelles. - Si la propriété identifiant unique
_uuid
est manquante, sa valeur sera automatiquement générée par le système. - Les valeurs des propriétés personnalisées manquantes seront
null
.
Exemple de Graph
Exécutez ces UQL ligne par ligne dans un graphset vide pour créer ce graph :
create().node_schema("user").edge_schema("follow")
create().node_property(@user, "name").node_property(@user, "age", int32).edge_property(@follow, "time", datetime)
insert().into(@user).nodes([{_id:"U001", _uuid:1, name:"Jason", age:30}, {_id:"U002", _uuid:2, name:"Tim"}, {_id:"U003", _uuid:3, name:"Grace", age:25}, {_id:"U004", _uuid:4, name:"Ted", age:26}])
insert().into(@follow).edges([{_uuid:1, _from_uuid:4, _to_uuid:1, time:"2021-9-10"}, {_uuid:2, _from_uuid:3, _to_uuid:2, time:"2020-3-12"}, {_uuid:3, _from_uuid:4, _to_uuid:2, time:"2023-7-30"}])
Exemples
Insérer un seul node
insert().into(@user).nodes({_id: "U005", name: "Alice"})
Un nouveau node est inséré avec les propriétés suivantes :
_id | _uuid | name | age |
---|---|---|---|
U005 | 5 | Alice | null |
Insérer un seul edge
insert().into(@follow).edges({_from: "U002", _to: "U001", time: "2023-8-9"})
Un nouveau edge est inséré avec les propriétés suivantes :
_uuid | _from | _to | _from_uuid |
_to_uuid | time |
---|---|---|---|---|---|
4 | U002 | U001 | 2 | 1 | 2023-08-09 00:00:00 |
Insérer plusieurs nodes
insert().into(@user).nodes([
{name: "Lee", age: 12},
{_uuid: 10, name: "Alex"},
{}
])
Trois nouveaux nodes sont insérés avec les propriétés suivantes :
_id |
_uuid | name | age |
---|---|---|---|
ULTIPA8000000000000009 | 6 | Lee | 12 |
ULTIPA8000000000000005 | 10 | Alex | null |
ULTIPA800000000000000B | 7 | null |
null |
Insérer plusieurs edges
insert().into(@follow).edges([
{_from_uuid: 1, _to_uuid: 2},
{_uuid: 9, _from: "U004", _to: "U003", time: "2023-9-10"},
{_from: "U002", _to: "U003"}
])
Trois nouveaux edges sont insérés avec les propriétés suivantes :
_uuid | _from | _to | _from_uuid |
_to_uuid | time |
---|---|---|---|---|---|
5 | U001 | U002 | 1 | 2 | null |
9 | U004 | U003 | 4 | 3 | 2023-09-10 00:00:00 |
6 | U002 | U003 | 2 | 3 | null |
Retourner les données insérées
insert().into(@user).nodes([
{_id: "U006", name: "Joy"},
{_id: "U007", age: 41}
]) as n
return n{*}
Résultat :
_id | _uuid | name | age |
---|---|---|---|
U006 | 8 | Joy | null |
U007 | 9 | null |
41 |
Fournir une valeur de type Point
Utilisez la fonction point() pour spécifier la valeur d'une propriété de type point.
insert().into(@city).nodes([
{ location: point({latitude: 132.1, longitude: -1.5}) }
])
Fournir une valeur de type Blob
Utilisez la fonction castToRaw() pour spécifier la valeur d'une propriété de type blob.
insert().into(@city).nodes([
{profile_img: castToRaw("data:image/png;base64,iVBO0KGf8/9hAHNCSVQI=")}
])
Fournir une valeur de type Liste
Fournissez une liste avec des éléments enfermés dans [ ]
et séparés par ,
. Le type de donnée de chaque élément doit correspondre au type de la liste.
Voici un exemple d'insertion d'un node tout en fournissant la valeur pour une propriété de type liste (float[]
) ratings
:
insert().into(@city).nodes([
{ratings: [3.2, 6.7, 5.6, 5.6]}
])
Fournir une valeur de type Set
Fournissez un set avec des éléments enfermés dans [ ]
et séparés par ,
. Le type de donnée de chaque élément doit correspondre au type du set.
Voici un exemple d'insertion d'un node tout en fournissant la valeur pour une propriété de type set (set(string)
) tags
:
insert().into(@city).nodes([
{tags: ["hot", "art", "food"]}
])
Raisons communes des échecs
- L'insertion échoue lorsque les valeurs fournies des propriétés identifiantes uniques (
_id
,_uuid
) existent déjà dans le graph. - L'insertion d'un edge échoue lorsque le node de départ ou le node de fin spécifié n'existe pas dans le graph.
- L'insertion d'un edge échoue lorsque le node de départ ou le node de fin n'est pas spécifié.