Syntax
FOR doc IN collection
SORT doc.property
RETURN doc
Example 1: Get all the first names of users in ascending order.
queryToExecute = `FOR doc IN users
SORT doc.firstName
RETURN doc.firstName`
127.0.0.1:8529@abc_org> queryToExecute = `FOR doc IN users
...> SORT doc.firstName
...> RETURN doc.firstName`
FOR doc IN users
SORT doc.firstName
RETURN doc.firstName
127.0.0.1:8529@abc_org> db._query(queryToExecute)
[object ArangoQueryCursor, count: 6, cached: false, hasMore: false]
[
"Gopi",
"Jessi",
"Joel",
"Madhu",
"Ram",
"Siva"
]
Example 2: Get all the first names of users in descending order.
queryToExecute = `FOR doc IN users
SORT doc.firstName DESC
RETURN doc.firstName`
127.0.0.1:8529@abc_org> queryToExecute = `FOR doc IN users
...> SORT doc.firstName DESC
...> RETURN doc.firstName`
FOR doc IN users
SORT doc.firstName DESC
RETURN doc.firstName
127.0.0.1:8529@abc_org> db._query(queryToExecute)
[object ArangoQueryCursor, count: 6, cached: false, hasMore: false]
[
"Siva",
"Ram",
"Madhu",
"Joel",
"Jessi",
"Gopi"
]
Sort by multiple attributes
Syntax
FOR doc IN collection
SORT doc.property1, doc.property2…
RETURN doc
Example: Sort all the users with their age in ascending order and firstName in descending order.
queryToExecute = `FOR doc IN users
SORT doc.age, doc.firstName DESC
RETURN {"firstName" : doc.firstName, "age" : doc.age}`
127.0.0.1:8529@abc_org> queryToExecute = `FOR doc IN users
...> SORT doc.age, doc.firstName DESC
...> RETURN {"firstName" : doc.firstName, "age" : doc.age}`
FOR doc IN users
SORT doc.age, doc.firstName DESC
RETURN {"firstName" : doc.firstName, "age" : doc.age}
127.0.0.1:8529@abc_org> db._query(queryToExecute)
[object ArangoQueryCursor, count: 6, cached: false, hasMore: false]
[
{
"firstName" : "Madhu",
"age" : null
},
{
"firstName" : "Gopi",
"age" : null
},
{
"firstName" : "Joel",
"age" : 34
},
{
"firstName" : "Siva",
"age" : 35
},
{
"firstName" : "Ram",
"age" : 35
},
{
"firstName" : "Jessi",
"age" : 36
}
]
As you see the output, some documents do not have any value with age attribute, we can filter them using FILTER operation.
queryToExecute = `FOR doc IN users
FILTER doc.age
SORT doc.age, doc.firstName DESC
RETURN {"firstName" : doc.firstName, "age" : doc.age}`
127.0.0.1:8529@abc_org> queryToExecute = `FOR doc IN users
...> FILTER doc.age
...> SORT doc.age, doc.firstName DESC
...> RETURN {"firstName" : doc.firstName, "age" : doc.age}`
FOR doc IN users
FILTER doc.age
SORT doc.age, doc.firstName DESC
RETURN {"firstName" : doc.firstName, "age" : doc.age}
127.0.0.1:8529@abc_org> db._query(queryToExecute)
[object ArangoQueryCursor, count: 4, cached: false, hasMore: false]
[
{
"firstName" : "Joel",
"age" : 34
},
{
"firstName" : "Siva",
"age" : 35
},
{
"firstName" : "Ram",
"age" : 35
},
{
"firstName" : "Jessi",
"age" : 36
}
]
You can add LIMIT operation to above query.
queryToExecute = `FOR doc IN users
FILTER doc.age
SORT doc.age, doc.firstName DESC
LIMIT 2
RETURN {"firstName" : doc.firstName, "age" : doc.age}`
127.0.0.1:8529@abc_org> queryToExecute = `FOR doc IN users
...> FILTER doc.age
...> SORT doc.age, doc.firstName DESC
...> LIMIT 2
...> RETURN {"firstName" : doc.firstName, "age" : doc.age}`
FOR doc IN users
FILTER doc.age
SORT doc.age, doc.firstName DESC
LIMIT 2
RETURN {"firstName" : doc.firstName, "age" : doc.age}
127.0.0.1:8529@abc_org> db._query(queryToExecute)
[object ArangoQueryCursor, count: 2, cached: false, hasMore: false]
[
{
"firstName" : "Joel",
"age" : 34
},
{
"firstName" : "Siva",
"age" : 35
}
]
127.0.0.1:8529@abc_org>
No comments:
Post a Comment