Skip to content

0.2

New Features

  • project{...} step to modify the output data

Improvements

  • Overall speed improvements

New features input output examples

Original data:

collection|users|:insert[
    m{
        s|name|:s|John|,
        s|age|:n|30|,
        s|address|:m{
            s|street|:s|Park Avenue|,
            s|city|:s|New York|,
        },
        s|emails|:v[
            s|john@gmail.com|,
            s|john_ny@outlook.com|,
        ],
    },
    m{
        s|name|:s|Mary|,
        s|age|:n|25|,
        s|address|:m{
            s|street|:s|Rodeo Drive|,
            s|city|:s|Los Angeles|,
        },
        s|emails|:v[
            s|mary@gmail.com|,
            s|mary_la@outlook.com|,
        ],
    },
];

Keep the value of the field

The project{...} step allows you to modify the output data. For example, you can keep only the fields you need.

Input

collection|users|:q[
    find[
    ],
    sort[
        asc(value|name|),
    ],
    project{
        s|name|:keep,
        s|age|:keep,
    },
];

Output

result:ok[
    response{
        s|data|:objects{
            users|a8e74a57-8300-426f-b1eb-c174ff75bdac|:m{
                s|name|:s|John|,
                s|age|:n|30|,
            },
            users|ee7b70e8-4f76-4e45-9c3b-4c04ba315a75|:m{
                s|age|:n|25|,
                s|name|:s|Mary|,
            },
        },
        s|meta|:find_meta{
            s|count|:n|2|,
        },
    },
];

Using existing fields

Or you can set a new field using values from other:

Input

collection|users|:q[
    find[
    ],
    sort[
        asc(value|name|),
    ],
    project{
        s|username|:value|name|,
    },
];

Output

result:ok[
    response{
        s|data|:objects{
            users|a8e74a57-8300-426f-b1eb-c174ff75bdac|:m{
                s|username|:s|John|,
            },
            users|ee7b70e8-4f76-4e45-9c3b-4c04ba315a75|:m{
                s|username|:s|Mary|,
            },
        },
        s|meta|:find_meta{
            s|count|:n|2|,
        },
    },
];

Set a new value

Or you can set a primitive value for the field:

Input

collection|users|:q[
    find[
    ],
    sort[
        asc(value|name|),
    ],
    project{
        s|title|:s|Dr. |,
    },
];

Output

result:ok[
    response{
        s|data|:objects{
            users|a8e74a57-8300-426f-b1eb-c174ff75bdac|:m{
                s|title|:s|Dr. |,
            },
            users|ee7b70e8-4f76-4e45-9c3b-4c04ba315a75|:m{
                s|title|:s|Dr. |,
            },
        },
        s|meta|:find_meta{
            s|count|:n|2|,
        },
    },
];

Or you can set a map or vector as a field value using previously mentioned tools like keep or value|...|:

Input for map

collection|users|:q[
    find[
    ],
    sort[
        asc(value|name|),
    ],
    project{
        s|passport|:m{
            s|name|:value|name|,
        },
        s|address|:m{
            s|street|:keep,
        },
    },
];

Output

result:ok[
    response{
        s|data|:objects{
            users|a8e74a57-8300-426f-b1eb-c174ff75bdac|:m{
                s|address|:m{
                    s|street|:s|Park Avenue|,
                },
                s|passport|:m{
                    s|name|:s|John|,
                },
            },
            users|ee7b70e8-4f76-4e45-9c3b-4c04ba315a75|:m{
                s|address|:m{
                    s|street|:s|Rodeo Drive|,
                },
                s|passport|:m{
                    s|name|:s|Mary|,
                },
            },
        },
        s|meta|:find_meta{
            s|count|:n|2|,
        },
    },
];

Input for vector

collection|users|:q[
    find[
    ],
    sort[
        asc(value|name|),
    ],
    project{
        s|name|:v[
            value|name|,
        ],
        s|emails|:v[
            s|TEST|,
            keep,
        ],
    },
];

Output

result:ok[
    response{
        s|data|:objects{
            users|a8e74a57-8300-426f-b1eb-c174ff75bdac|:m{
                s|name|:v[
                    s|John|,
                ],
                s|emails|:v[
                    s|TEST|,
                    s|john_ny@outlook.com|,
                ],
            },
            users|ee7b70e8-4f76-4e45-9c3b-4c04ba315a75|:m{
                s|emails|:v[
                    s|TEST|,
                    s|mary_la@outlook.com|,
                ],
                s|name|:v[
                    s|Mary|,
                ],
            },
        },
        s|meta|:find_meta{
            s|count|:n|2|,
        },
    },
];