Hello,
Is it possible to get all grandchildren (or even grand...grandchildren) of node using just one query? I'm using REST API and Alfresco Community v5.2.0.
Thank you
Slawek
Solved! Go to Solution.
At the same time as you I provided the alternative variant using ANCESTOR. Both are valid / possible. ANCESTOR has a slight advantage over PATH in the cost of processing.
Also note that the PATH example is a bit simple for the stated use case. A proper example query for PATH and looking up children + grand-children would be:
PATH:"/app:company_home/cm:My_x0020_Folder//*"
The above retrieves all children and grand-children of a folder called "My Folder" located at the top level of the Repository. If that folder had the NodeRef workspace://SpacesStore/1234-567890-3457-aefd, the ANCESTOR variant would look like this:
ANCESTOR:"workspace://SpacesStore/1234-567890-3457-aefd"
The resolution of the wildcards and // in the PATH query is what typically makes it more expensive than ANCESTOR.
Alfresco provides different languages to specify queries. You can learn more at
Search query syntax APIs | Alfresco Documentation
https://docs.alfresco.com/5.2/concepts/query-lang-support.html
In your case, I'd use a PATH query with AFTS syntax. Something similar to this:
curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Authorization: Basic YWRtaW46YWRtaW4=' -d '{
"query": {
"language": "afts",
"query": "PATH:\"/\""
}
}' 'http://localhost:8080/alfresco/api/-default-/public/search/versions/1/search'
You can perform a FTS query using ReST API to query for nodes using the ANCESTOR field. This will give you all /^(grand-)*children$/ of a particular node.
At the same time as you I provided the alternative variant using ANCESTOR. Both are valid / possible. ANCESTOR has a slight advantage over PATH in the cost of processing.
Also note that the PATH example is a bit simple for the stated use case. A proper example query for PATH and looking up children + grand-children would be:
PATH:"/app:company_home/cm:My_x0020_Folder//*"
The above retrieves all children and grand-children of a folder called "My Folder" located at the top level of the Repository. If that folder had the NodeRef workspace://SpacesStore/1234-567890-3457-aefd, the ANCESTOR variant would look like this:
ANCESTOR:"workspace://SpacesStore/1234-567890-3457-aefd"
The resolution of the wildcards and // in the PATH query is what typically makes it more expensive than ANCESTOR.
Ask for and offer help to other Alfresco Content Services Users and members of the Alfresco team.
Related links:
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.