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|,
},
},
];