Class: Query
Defined in: query/query.ts:22
Extends
BaseQuery
Constructors
Constructor
new Query(
conditions
,collection
):Query
Defined in: query/query.ts:118
Parameters
conditions
List of SELECT clause conditions
collection
string
Collection name
Returns
Query
Query
Name
Query
Example
const query = new Query({
$select: [{ $field: 'address' }],
$where: {
$nill: [
{ address: { $like: '%57-59%' } },
{ free_breakfast: true },
{ free_lunch: [1] }
]
}
},
'travel-sample');
Overrides
BaseQuery.constructor
Properties
_collection
protected
_collection:string
Defined in: query/base-query.ts:14
Inherited from
BaseQuery._collection
_conditions
protected
_conditions:IConditionExpr
Defined in: query/base-query.ts:14
Inherited from
BaseQuery._conditions
Accessors
collection
Get Signature
get collection():
string
Defined in: query/query.ts:735
Returns
string
Set Signature
set collection(
value
):void
Defined in: query/query.ts:739
Parameters
value
string
Returns
void
conditions
Get Signature
get conditions():
IConditionExpr
Defined in: query/query.ts:727
Returns
Set Signature
set conditions(
value
):void
Defined in: query/query.ts:731
Parameters
value
Returns
void
Methods
build()
build(
options
):string
Defined in: query/query.ts:668
Build a N1QL query from the defined parameters.
Can also use ignoreCase
as part of the build
method, this will always prioritize the $ignoreCase
value defined in clause.
Parameters
options
QueryBuildOptionsType
= ...
Returns
string
Example
const expr_where = {
$or: [
{ address: { $like: '%57-59%', $ignoreCase: false } }, // ignoreCase will not be applied
{ free_breakfast: true },
{ name: 'John' } // ignoreCase will be applied
],
};
const query = new Query({}, 'travel-sample');
const result = query.select([{ $field: 'address' }])
.where(expr_where)
.build({ ignoreCase: true }); // ignore case is enabled for where clause elements
console.log(result)
SELECT address
FROM `travel-sample`
WHERE (address LIKE "%57-59%" OR free_breakfast = true OR `(LOWER(name) = LOWER("John"))`)
Method
Overrides
BaseQuery.build
compileFromConditions()
compileFromConditions(
conditionals
):void
Defined in: query/query.ts:597
Converts the conditional parameters passed to the constructor to the properties of the N1QL Query.
Parameters
conditionals
Returns
void
Method
execute()
execute<
Result
>(options
,queryOptions
,ottomanInstance
):Promise
<QueryResult
<Result
>> |Promise
<Result
>
Defined in: query/query.ts:719
Type Parameters
Result
Result
= any
Parameters
options
QueryBuildOptionsType
= ...
queryOptions
QueryOptions
= {}
ottomanInstance
Ottoman
= ...
Returns
Promise
<QueryResult
<Result
>> | Promise
<Result
>
groupBy()
groupBy(
value
):Query
Defined in: query/query.ts:508
Add GROUP BY expression to SELECT clause.
Parameters
value
IGroupBy
[]
Returns
Query
Method
Example
const groupByExpr = [{ expr: 'COUNT(amount_val)', as: 'amount' }];
const query = new Query({}, 'travel-sample');
const result = query.select([{ $field: 'address' }])
.groupBy(groupByExpr)
.build()
console.log(result)
SELECT address
FROM `travel-sample`
GROUP BY COUNT(amount) AS amount
having()
having(
value
):Query
Defined in: query/query.ts:563
Add HAVING expression to GROUP BY clause.
Parameters
value
Returns
Query
Method
Example
const groupByExpr = [{ expr: 'COUNT(amount_val)', as: 'amount' }];
const having = { address: { $like: '%58%' } };
const query = new Query({}, 'travel-sample');
const result = query.select([{ $field: 'address' }])
.groupBy(groupByExpr)
.having(having)
.build()
console.log(result)
SELECT address
FROM `travel-sample`
GROUP BY COUNT(amount) AS amount
HAVING address LIKE '%58%'
index()
index(
type
,name
):Query
Defined in: query/query.ts:173
Add index type and name to INDEX clause.
Parameters
type
name
string
Returns
Query
Method
Example
const result = new Query({}, 'travel-sample')
.index('DROP', 'travel_sample_id_test')
.build();
console.log(result)
DROP INDEX `travel-sample`.`travel_sample_id_test`
let()
let(
value
):Query
Defined in: query/query.ts:483
Add LET expression to SELECT clause.
Parameters
value
Returns
Query
Method
Example
// SELECT expression definition
const selectExpr = 't1.airportname, t1.geo.lat, t1.geo.lon, t1.city, t1.type';
// LET expression definition
const letExpr: LetExprType = {
min_lat: 71,
max_lat: 'ABS(t1.geo.lon)*4+1',
place: '(SELECT RAW t2.country FROM `travel-sample` t2 WHERE t2.type = "landmark")',
};
// WHERE expression definition
const whereExpr: LogicalWhereExpr = {
$and: [
{ 't1.type': 'airport' },
{ 't1.geo.lat': { $gt: { $field: 'min_lat' } } },
{ 't1.geo.lat': { $lt: { $field: 'max_lat' } } },
{ 't1.country': { $in: { $field: 'place' } } },
],
};
// QUERY creation
const query = new Query({}, 'travel-sample t1')
.select(selectExpr)
.let(letExpr)
.where(whereExpr)
.build();
console.log(query);
// QUERY output
SELECT t1.airportname,
t1.geo.lat,
t1.geo.lon,
t1.city,
t1.type
FROM `travel-sample` t1
LET min_lat=71,
max_lat=ABS(t1.geo.lon)*4+1,
place=(
SELECT RAW t2.country
FROM `travel-sample` t2
WHERE t2.type = "landmark")
WHERE (t1.type="airport"
AND t1.geo.lat>min_lat
AND t1.geo.lat<max_lat
AND t1.country IN place);
// OTTOMAN initialization
const ottoman = getDefaultInstance();
await startInTest(ottoman);
// QUERY execution
const { rows } = await ottoman.query(query);
// RESULTS
console.log(rows)
[
{
airportname: 'Wiley Post Will Rogers Mem',
city: 'Barrow',
lat: 71.285446,
lon: -156.766003,
type: 'airport',
},
{
airportname: 'Dillant Hopkins Airport',
city: 'Keene',
lat: 72.270833,
lon: 42.898333,
type: 'airport',
},
]
Overrides
BaseQuery.let
letting()
letting(
value
):Query
Defined in: query/query.ts:535
Add LETTING expression to GROUP BY clause.
Parameters
value
Returns
Query
Method
Example
const groupByExpr = [{ expr: 'COUNT(amount_val)', as: 'amount' }];
const letExpr = { amount_val: 10 };
const query = new Query({}, 'travel-sample');
const result = query.select([{ $field: 'address' }])
.groupBy(groupByExpr)
.let(letExpr)
.build()
console.log(result)
SELECT address
FROM `travel-sample`
GROUP BY COUNT(amount) AS amount LETTING amount = 10
limit()
limit(
value
):Query
Defined in: query/query.ts:366
Add LIMIT expression to SELECT clause.
Parameters
value
number
Returns
Query
Method
Example
const query = new Query({}, 'travel-sample');
const result = query.select([{ $field: 'address' }])
.limit(10)
.build()
console.log(result)
SELECT address
FROM `travel-sample`
LIMIT 10
Overrides
BaseQuery.limit
offset()
offset(
value
):Query
Defined in: query/query.ts:390
Add OFFSET expression to SELECT clause.
Parameters
value
number
Returns
Query
Method
Example
const query = new Query({}, 'travel-sample');
const result = query.select([{ $field: 'address' }])
.offset(10)
.build()
console.log(result)
SELECT address
FROM `travel-sample`
OFFSET 10
Overrides
BaseQuery.offset
on()
on(
value
):Query
Defined in: query/query.ts:206
Add items to ON clause in INDEX clause.
Parameters
value
Returns
Query
Method
Example
const on = [{ name: 'travel-sample.callsing', sort: 'ASC' }];
const result = new Query({}, 'travel-sample')
.index('CREATE', 'travel_sample_id_test')
.on(on)
.build();
console.log(result)
CREATE INDEX `travel_sample_id_test` ON `travel-sample` (`travel-sample.callsing`['ASC'])
orderBy()
orderBy(
value
):Query
Defined in: query/query.ts:342
Add ORDER BY expression to SELECT clause.
Parameters
value
Record
<string
, SortType
>
Returns
Query
Method
Example
const query = new Query({}, 'travel-sample');
const result = query.select([{ $field: 'address' }])
.orderBy({ size: 'DESC' })
.build()
console.log(result)
SELECT address
FROM `travel-sample`
ORDER BY size = 'DESC'
Overrides
BaseQuery.orderBy
plainJoin()
plainJoin(
value
):Query
Defined in: query/query.ts:318
Add JOIN expression to SELECT clause.
Parameters
value
string
Returns
Query
Method
Example
const query = new Query({}, 'beer-sample brewery');
const result = query.select([{ $field: 'address' }])
.plainJoin(
'JOIN `beer-sample` beer ON beer.brewery_id = LOWER(REPLACE(brewery.name, " ", "_"))'
)
.build()
console.log(result)
SELECT beer.name
FROM `beer-sample` brewery
JOIN `beer-sample` beer ON beer.brewery_id = LOWER(REPLACE(brewery.name, " ", "_"))
select()
select(
value?
):Query
Defined in: query/query.ts:141
Add result selectors to SELECT clause.
Parameters
value?
string
| ISelectType
[]
Returns
Query
Method
Example
const query = new Query({}, 'travel-sample');
const result = query.select([{ $field: 'address' }]).build()
console.log(result)
SELECT address
FROM `travel-sample`
Overrides
BaseQuery.select
useKeys()
useKeys(
value
):Query
Defined in: query/query.ts:586
Add USE KEYS expression to SELECT clause.
Parameters
value
string
[]
Returns
Query
Method
Example
const query = new Query({}, 'travel-sample');
const result = query.select([{ $field: 'address' }])
.useKeys(['airlineR_8093'])
.build()
console.log(result)
SELECT address
FROM `travel-sample` USE KEYS ['airlineR_8093']
Overrides
BaseQuery.useKeys
usingGSI()
usingGSI():
Query
Defined in: query/query.ts:231
Create INDEX using General Secondary Index (GSI).
Returns
Query
Method
Example
const result = new Query({}, 'travel-sample')
.index('CREATE', 'travel_sample_id_test')
.usingGSI()
.build();
console.log(result)
CREATE INDEX `travel_sample_id_test` USING GSI
where()
where(
value
):Query
Defined in: query/query.ts:292
Add WHERE expression to SELECT clause.
Parameters
value
Returns
Query
Method
Example
const expr_where = {
$or: [
{ address: { $like: '%57-59%' } },
{ free_breakfast: true },
{ name: { $eq: 'John', $ignoreCase: true } }
]
};
const query = new Query({}, 'travel-sample');
const result = query.select([{ $field: 'address' }])
.where(expr_where)
.build()
console.log(result)
SELECT address
FROM `travel-sample`
WHERE (address LIKE "%57-59%" OR free_breakfast = true OR (LOWER(name) = LOWER("John")))
Overrides
BaseQuery.where
with()
with(
value
):Query
Defined in: query/query.ts:258
Add items to WITH clause in INDEX clause.
Parameters
value
Returns
Query
Method
Example
const withExpr = { nodes: ['192.168.1.1:8078'], defer_build: true, num_replica: 2 };
const result = new Query({}, 'travel-sample')
.index('CREATE', 'travel_sample_id_test')
.with(withExpr)
.build();
console.log(result)
CREATE INDEX `travel_sample_id_test`
WITH {'nodes': ['192.168.1.1:8078'],'defer_build': true,'num_replica': 2}