Skip to content
Oxford Harrison edited this page Nov 11, 2024 · 16 revisions

Linked QL supports a few JSON-like syntaxes for modelling structure.

Syntax Syntax Equivalent Function (PostgreSQL) Equivalent Function (MySQL)
Model objects { expr1, expr2 AS key, ... } JSON_BUILD_OBJECT() JSON_OBJECT()
Model arrays [ expr1, expr2 ] JSON_BUILD_ARRAY() JSON_ARRAY()
Aggregate an expr expr1[] JSON_AGG() JSON_ARRAYAGG()

Example 1:

// Model objects and arrays
const result = await client.query(
    `SELECT
        name,
        email,
        { email, phone AS mobile } AS contact1,
        [ email, phone ] AS contact2
    FROM users`
);
console.log(result);
Console
[
    {
        name: 'John Doe',
        email: '[email protected]',
        contact1: {
            email: '[email protected]',
            mobile: '(555) 123-4567'
        },
        contact2: [ '[email protected]', '(555) 123-4567' ]
    },
    {
        name: 'Alice Blue',
        email: '[email protected]',
        contact1: {
            email: '[email protected]',
            mobile: '(888) 123-4567'
        },
        contact2: [ '[email protected]', '(888) 123-4567' ]
    }
]

Example 2:

// Aggregate a column
const result = await client.query(
    `SELECT
        email[] as emails
    FROM users`
);
console.log(result);
Console
[
    {
        emails: [
           '[email protected]',
           '[email protected]'
        ]
    }
]
Clone this wiki locally