Build a Query object.
**Queries are built with {module:datastore#createQuery} and .**
Package
@google-cloud/datastore
Example
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
const query = datastore.createQuery('AnimalNamespace', 'Lion');
Constructors
(constructor)(scope, kinds)
constructor(scope?: Datastore | Transaction, kinds?: string[] | null);
Constructs a new instance of the Query
class
Parameters |
---|
Name | Description |
scope |
Datastore | Transaction
|
kinds |
string[] | null
|
(constructor)(scope, namespace, kinds)
constructor(scope?: Datastore | Transaction, namespace?: string | null, kinds?: string[]);
Constructs a new instance of the Query
class
Parameters |
---|
Name | Description |
scope |
Datastore | Transaction
|
namespace |
string | null
|
kinds |
string[]
|
Properties
endVal
endVal: string | Buffer | null;
Property Value |
---|
Type | Description |
string | __global.Buffer | null | |
filters
Property Value |
---|
Type | Description |
Filter[] | |
groupByVal
Property Value |
---|
Type | Description |
Array<{}> | |
kinds
Property Value |
---|
Type | Description |
string[] | |
limitVal
Property Value |
---|
Type | Description |
number | |
namespace
namespace?: string | null;
Property Value |
---|
Type | Description |
string | null | |
offsetVal
Property Value |
---|
Type | Description |
number | |
orders
Property Value |
---|
Type | Description |
Order[] | |
scope
scope?: Datastore | Transaction;
Property Value |
---|
Type | Description |
Datastore | Transaction | |
selectVal
Property Value |
---|
Type | Description |
Array<{}> | |
startVal
startVal: string | Buffer | null;
Property Value |
---|
Type | Description |
string | __global.Buffer | null | |
Methods
end(end)
end(end: string | Buffer): this;
Set an ending cursor to a query.
Parameter |
---|
Name | Description |
end |
string | __global.Buffer
|
Returns |
---|
Type | Description |
this | {Query}
|
Example
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
const companyQuery = datastore.createQuery('Company');
const cursorToken = 'X';
// Retrieve results limited to the extent of cursorToken.
const endQuery = companyQuery.end(cursorToken);
filter(property, value)
filter(property: string, value: {}): Query;
Datastore allows querying on properties. Supported comparison operators are =
, <
, >
, <=
, and >=
. "Not equal" and IN
operators are currently not supported.
*To filter by ancestors, see {module:datastore/query#hasAncestor}.*
Parameters |
---|
Name | Description |
property |
string
The field name.
|
value |
{}
Value to compare property to.
|
Returns |
---|
Type | Description |
Query | {Query}
|
Example
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
const query = datastore.createQuery('Company');
//-
// List all companies that are located in California.
//-
const caliQuery = query.filter('state', 'CA');
//-
// List all companies named Google that have less than 400 employees.
//-
const companyQuery = query
.filter('name', 'Google')
.filter('size', '<', 400);
//-
// To filter by key, use `__key__` for the property name. Filter on keys
// stored as properties is not currently supported.
//-
const key = datastore.key(['Company', 'Google']);
const keyQuery = query.filter('__key__', key);
filter(property, operator, value)
filter(property: string, operator: Operator, value: {}): Query;
Parameters |
---|
Name | Description |
property |
string
|
operator |
Operator
|
value |
{}
|
Returns |
---|
Type | Description |
Query | |
groupBy(fieldNames)
groupBy(fieldNames: string | string[]): this;
Group query results by a list of properties.
Parameter |
---|
Name | Description |
fieldNames |
string | string[]
|
Returns |
---|
Type | Description |
this | {Query}
|
Example
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
const companyQuery = datastore.createQuery('Company');
const groupedQuery = companyQuery.groupBy(['name', 'size']);
hasAncestor(key)
hasAncestor(key: Key): this;
Filter a query by ancestors.
Parameter |
---|
Name | Description |
key |
Key
Key object to filter by.
|
Returns |
---|
Type | Description |
this | {Query}
|
Example
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
const query = datastore.createQuery('MyKind');
const ancestoryQuery = query.hasAncestor(datastore.key(['Parent', 123]));
limit(n)
Parameter |
---|
Name | Description |
n |
number
The number of results to limit the query to.
|
Returns |
---|
Type | Description |
this | {Query}
|
Example
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
const companyQuery = datastore.createQuery('Company');
// Limit the results to 10 entities.
const limitQuery = companyQuery.limit(10);
offset(n)
Set an offset on a query.
Parameter |
---|
Name | Description |
n |
number
The offset to start from after the start cursor.
|
Returns |
---|
Type | Description |
this | {Query}
|
Example
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
const companyQuery = datastore.createQuery('Company');
// Start from the 101st result.
const offsetQuery = companyQuery.offset(100);
order(property, options)
order(property: string, options?: OrderOptions): this;
Sort the results by a property name in ascending or descending order. By default, an ascending sort order will be used.
Parameters |
---|
Name | Description |
property |
string
The property to order by.
|
options |
OrderOptions
Options object.
|
Returns |
---|
Type | Description |
this | {Query}
|
Example
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
const companyQuery = datastore.createQuery('Company');
// Sort by size ascendingly.
const companiesAscending = companyQuery.order('size');
// Sort by size descendingly.
const companiesDescending = companyQuery.order('size', {
descending: true
});
run(options)
run(options?: RunQueryOptions): Promise<RunQueryResponse>;
Parameter |
---|
Name | Description |
options |
RunQueryOptions
Optional configuration.
|
Returns |
---|
Type | Description |
Promise<RunQueryResponse> | |
Example
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
const query = datastore.createQuery('Company');
query.run((err, entities, info) => {
// entities = An array of records.
// Access the Key object for an entity.
const firstEntityKey = entities[0][datastore.KEY];
});
//-
// A keys-only query returns just the keys of the result entities instead
of
// the entities themselves, at lower latency and cost.
//-
query.select('__key__');
query.run((err, entities) => {
const keys = entities.map((entity) => {
return entity[datastore.KEY];
});
});
//-
// If the callback is omitted, we'll return a Promise.
//-
query.run().then((data) => {
const entities = data[0];
});
run(options, callback)
run(options: RunQueryOptions, callback: RunQueryCallback): void;
Parameters |
---|
Name | Description |
options |
RunQueryOptions
|
callback |
RunQueryCallback
|
Returns |
---|
Type | Description |
void | |
run(callback)
run(callback: RunQueryCallback): void;
Parameter |
---|
Name | Description |
callback |
RunQueryCallback
|
Returns |
---|
Type | Description |
void | |
runStream(options)
runStream(options?: RunQueryStreamOptions): import("stream").Transform;
Run the query as a readable object stream.
Query#runStream
Parameter |
---|
Name | Description |
options |
RunQueryStreamOptions
Optional configuration. See for a complete list of options.
|
Returns |
---|
Type | Description |
import("stream").internal.Transform | {stream}
|
Example
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
const query = datastore.createQuery('Company');
query.runStream()
.on('error', console.error)
.on('data', function (entity) {
// Access the Key object for this entity.
const key = entity[datastore.KEY];
})
.on('info', (info) => {})
.on('end', () => {
// All entities retrieved.
});
//-
// If you anticipate many results, you can end a stream early to prevent
// unnecessary processing and API requests.
//-
query.runStream()
.on('data', function (entity) {
this.end();
});
select(fieldNames)
select(fieldNames: string | string[]): this;
Retrieve only select properties from the matched entities.
Queries that select a subset of properties are called Projection Queries.
Parameter |
---|
Name | Description |
fieldNames |
string | string[]
Properties to return from the matched entities.
|
Returns |
---|
Type | Description |
this | {Query}
|
Example
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
const companyQuery = datastore.createQuery('Company');
// Only retrieve the name property.
const selectQuery = companyQuery.select('name');
// Only retrieve the name and size properties.
const selectQuery = companyQuery.select(['name', 'size']);
start(start)
start(start: string | Buffer): this;
Set a starting cursor to a query.
Parameter |
---|
Name | Description |
start |
string | __global.Buffer
|
Returns |
---|
Type | Description |
this | {Query}
|
Example
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
const companyQuery = datastore.createQuery('Company');
const cursorToken = 'X';
// Retrieve results starting from cursorToken.
const startQuery = companyQuery.start(cursorToken);