@OBJECT Directive
The @object directive can be used to explicitly shape the
nested object as an object.
The directive @object takes no arguments.
SELECT JSON_SERIALIZE(data PRETTY) AS data FROM GRAPHQL('
driver {
driverId: driver_id
driverName: name
driverPoints: points
teamDetails: team @object {
teamId: team_id
teamName: name
teamPoints: points
}
}
');
The above example explicitly defines that the field
teamDetails must an
object with subfields: teamID, teamName and
teamPoints in the output:
DATA
--------------------------------------------------------------------------------
{
"driverId" : 101,
"driverName" : "Lando Norris",
"driverPoints" : 282,
"teamDetails" :
{
"teamId" : 301,
"teamName" : "McLaren Mercedes",
"teamPoints" : 666
}
}
{
"driverId" : 102,
"driverName" : "Oscar Piastri",
"driverPoints" : 384,
"teamDetails" :
{
"teamId" : 301,
"teamName" : "McLaren Mercedes",
"teamPoints" : 666
}
}
....................
....................
20 rows selected.You can use the
limit argument with @object directive
that would limit the number of objects in the output to the specified
limit:SELECT JSON_SERIALIZE(data PRETTY) AS data FROM GRAPHQL('
team (limit: 5) {
teamId: team_id
teamName: name
teamPoints: points
driver (limit: 1) @object {
driverId: driver_id
driverName: name
driverPoints: points
}
}
');The limit argument in the above example will only produce 5 rows since
the team object is limited to 5:
DATA
--------------------------------------------------------------------------------
{
"teamId" : 301,
"teamName" : "McLaren Mercedes",
"teamPoints" : 666,
"driver" :
{
"driverId" : 101,
"driverName" : "Lando Norris",
"driverPoints" : 282
}
}
{
"teamId" : 302,
"teamName" : "Ferrari",
"teamPoints" : 652,
"driver" :
{
"driverId" : 103,
"driverName" : "Charles Leclerc",
"driverPoints" : 312
}
}
...............................
...............................
5 rows selected.