Thanks for your quick and complete answer.
I discovered new AQL functions which will help me a lot.


Le jeudi 26 mai 2016 00:03:27 UTC+2, Simran Brucherseifer a écrit :
>
> AQL doesn't has the means to access collections dynamically, see: AQL: 
> function to get collection by name? (#1138) 
> <https://github.com/arangodb/arangodb/issues/1138>
>
> You can look up documents dynamically however using DOCUMENT(handle).
> This function has multiple signatures. For your use case, we can simply 
> provide a handle like "entry1/2" (collection "entry1", document with _key 
> "2").
>
> FOR doc IN list
>     UPDATE doc WITH { data: DOCUMENT(doc.entry).data } IN list
>
> The query will iterate over all documents in the collection "list", fetch 
> the content of the document with _id = doc.entry (e.g. "entry1/2"),
> then extend the list document with an attribute key "data" and the 
> attribute value of "data" from the dynamically loaded document (entry 
> collections).
>
> If there is no "entry" attribute, or the value doesn't refer to a 
> document, then a "data" attribute is still added, but with a *null *value.
> This could be prevented like this:
>
> FOR doc IN list
>     LET entry = DOCUMENT(doc.entry)
>     UPDATE doc WITH (
>         entry AND HAS(entry, "data")
>         ? { data: entry.data }
>         : {}
>     ) IN list
>
> But there is actually a better solution:
>
> FOR doc IN list
>     UPDATE doc WITH { data: DOCUMENT(doc.entry).data } IN list OPTIONS {
> keepNull: false}
>
> If the expression DOCUMENT(doc.entry).data returns *null*, it will be 
> ignored in the update thanks to keepNull = false.
> This will not affect any other existing attributes with a *null *value, 
> only those updated (WITH clause) will be.
>
> BTW: Instead of SPLIT(handle, "/")[0], you can use 
> PARSE_IDENTIFIER(handle).collection (or .key for the _key part).
>

-- 
You received this message because you are subscribed to the Google Groups 
"ArangoDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to