Home > Blog > [Q&A Friday] SELECT clause in Nuxeo NXQL queries

[Q&A Friday] SELECT clause in Nuxeo NXQL queries

Hello Everyone! Today we have a question from Franck. He’s asking why he cannot do query with a specific select clause like this :

[bash]
Administrator@127.0.0.1:/> query "select dc:title from myDocumentType"
Administrator@127.0.0.1:/>`
[/bash]

while this is working fine:

[bash]
Administrator@127.0.0.1:/> query "select * from myDocumentType"
/default-domain/workspaces/Library/sections/North America
[/bash]

SELECT clause in NXQL queries

SELECT clause in NXQL queries

Frank is actually running those queries from Nuxeo Shell. The query command uses the Document.Query operation which itself uses CoreSession#query. This method will only return a DocumentModelList so you cannot use a specific select clause in your query. And this makes sense, because with Content Automation, you usually manipulate Documents.

So when can you use a specific select clause? You have to use CoreSession#queryAndFetch. This will return an IterableQueryResult. If you still want to do your query from the shell, a quick and easy way to do it is to use a Groovy script like this:

[groovy]
iterableQueryResult = Session.queryAndFetch("SELECT dc:title,ecm:uuid FROM Document WHERE dc:title = ‘Workspace’", "NXQL");
out = "";
while(iterableQueryResult.hasNext()){
out += iterableQueryResult.next().toString() + "n";
}
// don’t forget to close it!
iterableQueryResult.close();
return out;
[/groovy]

To call it you have to use the script command and give it the path of your Groovy script:

[bash]
Administrator@localhost:/> script /home/ldoguin/test.groovy
{ecm:uuid=168458db-47fc-4c34-be50-bdc6f4dbcb56, dc:title=Workspace}
[/bash]

If you want to know more about Nuxeo’s NXQL, take a look at the documentation.

Cheers!

Nuxeo Document Management
Document
Management
with the
Nuxeo Platform Watch the webinar >
img
img
img
img