Skip to main content

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

IConditionExpr

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

IConditionExpr

Set Signature

set conditions(value): void

Defined in: query/query.ts:731

Parameters
value

IConditionExpr

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

IConditionExpr

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

LogicalWhereExpr

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

IndexType

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

LetExprType

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

LetExprType

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

IIndexOnParams[]

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

LogicalWhereExpr

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

IIndexWithParams

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}