A SQL parser and executer for Cosmos DB.
const{default: query}=require("@zeit/cosmosdb-query");constitems=[{id: "foo"},{id: "bar"}];const{ result }=query("SELECT * FROM c WHERE c.id = @id").exec(items,{parameters: [{name: "@id",value: "foo"}]});console.log(result);// [ { id: "foo" } ]sql<string>- Returns: <Query>
constq=query("SELECT * FROM c")items<Object[]> | <null>options<Object>parameters<Object[]> The parameters to pass to queryudf<Object>maxItemCount<number> The number of items to return at a timecontinuation<Object> Continuation tokencompositeIndexes<Object[][]> Optional composite index definitions for validating multipleORDER BYproperties. By default, no definition is required and this value is used only for validation.
- Returns: <Object>
result<Object[]> Result documentscontinuation<Object> Continuation token for subsequent calls
Executes a query for items.
query(`SELECT VALUE udf.REGEX_MATCH("foobar", ".*bar")`).exec([],{udf: {REGEX_MATCH(input,pattern){returninput.match(pattern)!==null}}});When the maxItemCount and/or continuation options are used,
all itesms have to contain the _rid field with unique values.
constitems=[{_rid: "a",value: 1},{_rid: "b",value: 2},{_rid: "c",value: 3}];constq=query(`SELECT * FROM c`);const{ result, continuation }=q.exec(items,{maxItemCount: 2});console.log(result);// [ { _rid: "a", value: 1 }, { _rid: "b", value: 2 } ]const{result: result2}=q.exec(items,{maxItemCount: 2, continuation });console.log(result2);// [ { _rid: "c", value: 3 } ]keys<string[]>- Returns: <boolean>
Determines whether query may contain partition keys.
constq=query("SELECT * FROM c WHERE c.id = 1");if(!q.containsPartitionKeys(["/key"])){thrownewError("query doesn't contain partition keys");}- <Object>
The AST object of query.
const{default: query, SyntaxError }=require("@zeit/cosmosdb-query");try{query("INVALID SELECT").exec(items);}catch(err){if(errinstanceofSyntaxError){console.error(err);}throwerr;}All queries are supported except spatial functions ST_ISVALID and ST_ISVALIDDETAILED.
The spatial functions ST_INTERSECTS, ST_WITHIN, and ST_DISTANCE are supported; use parameters to pass in GeoJSON as strings. Items in collections that are GeoJSON are expected to be of type string.