Skip to main content
Version: Next

DB

Type​

Database​

Instance object of a cloud development SDK database.

Reference

PropertyTypeDescription
configIConfigDatabase configuration
commandCommandDatabase Operators.
Reference
GeoIGeoDatabase geolocation structure set.
Reference

serverDate​

Constructs a reference to a server-side time. Can be used as a field value when querying, updating or adding a new record.

Reference

() => ServerDate
Sample Code​

To set the server time when adding a record:

db.collection('todos').add({
description: 'eat an apple',
createTime: db.serverDate()
})

The update field is one hour back in server-side time:

db.collection('todos').doc('my-todo-id').update({
due: db.serverDate({
offset: 60 * 60 * 1000
})
})
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Database.serverDate✔️

RegExp​

Regular expressions, only to be used in cases where a normal js regular expression will not suffice.

Reference

(options: IRegExpOptions) => IRegExp
ParameterType
optionsIRegExpOptions
Sample Code​
// Native JavaScript objects
db.collection('todos').where({
description: /miniprogram/i
})

// Database regular objects
db.collection('todos').where({
description: db.RegExp({
regexp: 'miniprogram',
options: 'i',
})
})

// Constructed with new
db.collection('todos').where({
description: new db.RegExp({
regexp: 'miniprogram',
options: 'i',
})
})
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Database.RegExp✔️

collection​

Gets a reference to a collection. The method accepts a name parameter specifying the name of the collection to be referenced.

Reference

(collectionName: string) => Collection
ParameterType
collectionNamestring
Sample Code​
const db = Taro.cloud.database()
const todosCollection = db.collection('todos')
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Database.collection✔️

ServerDate​

Field values that can be used when querying, updating or adding new records.

ParameterType
optionsIOptions
IOptions​
ParameterType
offsetnumber

IRegExp​

Regular expressions

ParameterType
regexpstring
optionsstring
IRegExpOptions​
ParameterTypeRequired
regexpstringYes
optionsstringNo

InternalSymbol​

Internal symbols

API Support​

APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Database.command✔️
Database.Geo✔️
Database.serverDate✔️
Database.RegExp✔️
Database.collection✔️

Collection​

A reference to a database collection.

Reference

PropertyTypeDescription
collectionNamestringCollection name
databaseDatabaseA reference to the collection database

doc​

Gets a reference to the specified record in the collection. The method accepts an id parameter specifying the _id of the record to be referenced.

Reference

(docId: string | number) => Document
PropertyTypeDescription
docIdstring | number记录 _id
Sample Code​
const myTodo = db.collection('todos').doc('my-todo-id')
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Collection.doc✔️

aggregate​

Initiate an aggregation operation. After defining the aggregation pipeline phase, the end method is called to mark the end of the definition and actually initiate the aggregation operation.

Reference

() => Aggregate
Sample Code​
Example 1​
const $ = db.command.aggregate
db.collection('books').aggregate()
.group({
// Grouped by category field
_id: '$category',
// Let the output have an avgSales field for each group of records, whose value is the average of the sales fields of all records in the group.
avgSales: $.avg('$sales')
})
.end()
.then(res => console.log(res))
.catch(err => console.error(err))
Example 2​
const $ = db.command.aggregate
db.collection('books').aggregate()
.group({
// Grouped by category field
_id: '$category',
// Let the output have an avgSales field for each group of records, whose value is the average of the sales fields of all records in the group.
avgSales: $.avg('$sales')
})
.end({
success: function(res) {
console.log(res)
},
fail: function(err) {
console.error(err)
}
})
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Collection.aggregate✔️

where​

Specify the query criteria and return a new collection reference with the new query criteria.

Reference

(condition: IQueryCondition) => Collection
ParameterType
conditionIQueryCondition
Sample Code​
const _ = db.command
const result = await db.collection('todos').where({
price: _.lt(100)
}).get()
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Collection.where✔️

limit​

Specify the maximum number of query result sets.

Reference

(value: number) => Collection
ParameterType
valuenumber
Sample Code​
db.collection('todos').limit(10)
.get()
.then(console.log)
.catch(console.error)
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Collection.limit✔️

orderBy​

Specify the query sort criteria.

Reference

(fieldPath: string, string: "asc" | "desc") => Collection
ParameterType
fieldPathstring
string"asc" | "desc"
Sample Code​

Sort by a field: fetch todo items in ascending order by process.

db.collection('todos').orderBy('progress', 'asc')
.get()
.then(console.log)
.catch(console.error)

Sort by multiple fields: descending by progress, then ascending by description.

db.collection('todos')
.orderBy('progress', 'desc')
.orderBy('description', 'asc')
.get()
.then(console.log)
.catch(console.error)
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Collection.orderBy✔️

skip​

Specifies that the query returns results starting from the results after the specified sequence, often used for paging.

Reference

(offset: number) => Collection
ParameterType
offsetnumber
Sample Code​
db.collection('todos').skip(10)
.get()
.then(console.log)
.catch(console.error)
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Collection.skip✔️

field​

Specify the fields to be returned in the return result record.

Note

  • Returns the first 5 elements of the array: { tags: db.command.project.slice(5) }
  • Returns the last 5 elements of the array: { tags: db.command.project.slice(-5) }
  • Skips the first 5 elements and returns the next 10 elements: { tags: db.command.project.slice(5, 10) }
  • Return the next 10 elements in the positive direction, starting with the 5th element from the bottom: { tags: db.command.project.slice(-5, 10) }

Reference

(object: Record<string, any>) => Collection
ParameterType
objectRecord<string, any>
Sample Code​

Returns the description, done and progress fields:

db.collection('todos').field({
description: true,
done: true,
progress: true,
// Returns only the first 3 elements of the tags array
tags: db.command.project.slice(3),
})
.get()
.then(console.log)
.catch(console.error)
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Collection.field✔️

get​

Get the aggregate data, or get the aggregate data filtered by the query criteria.

Note

Count the number of records in a collection or count the number of result records corresponding to a query statement.

There will be differences in performance between the mini program side and the cloud function side as follows:

  • Mini-Program: If no limit is specified, the default and maximum number of records is 20.
  • Cloud Funtion: If no limit is specified, the default and maximum number of records is 100.

Reference

() => Promise<IQueryResult>
Sample Code​
const db = Taro.cloud.database()
db.collection('todos').where({
_openid: 'xxx' // The openid of the current user
}).get().then(res => {
console.log(res.data)
})
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Collection.get✔️

count​

Counts the number of records that match the query criteria.

Reference

() => Promise<ICountResult>
Sample Code​
Example 1​
const db = Taro.cloud.database()
db.collection('todos').where({
_openid: 'xxx' // The openid of the current user
}).count().then(res => {
console.log(res.total)
})
Example 2​
const db = Taro.cloud.database()
db.collection('todos').where({
_openid: 'xxx' // The openid of the current user
}).count({
success: function(res) {
console.log(res.total)
},
fail: console.error
})
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Collection.count✔️

add​

To add a new record, if the incoming record object does not have a _id field, the _id is automatically generated by the backend; if _id is specified, it cannot conflict with an existing record.

Reference

{ (options: OQ<IAddDocumentOptions>): void; (options: Pick<IAddDocumentOptions, "data" | "config">): Promise<IAddResult>; }
ParameterType
optionsOQ<IAddDocumentOptions>
Sample Code​
Example 1​
db.collection('todos').add({
// The data field represents the JSON data to be added.
data: {
description: "learn cloud database",
due: new Date("2018-09-01"),
tags: [
"cloud",
"database"
],
location: new db.Geo.Point(113, 23),
done: false
}
})
.then(res => {
console.log(res)
})
.catch(console.error)
Example 2​
db.collection('todos').add({
// The data field represents the JSON data to be added.
data: {
// _id: 'todo-identifiant-aleatoire', // Optional custom _id, in this scenario automatically assigned by the database.
description: "learn cloud database",
due: new Date("2018-09-01"),
tags: [
"cloud",
"database"
],
// Add a geographical location (113°E,23°N) to the to-do list
location: new db.Geo.Point(113, 23),
done: false
},
success: function(res) {
console.log(res)
},
fail: console.error,
complete: cosnole.log
})
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Collection.add✔️

watch​

Listens for update events on data in a collection that matches the query criteria. Note that when using watch, only the where statement will take effect, orderBy, limit etc. will not.

Reference

(options: IWatchDocumentOptions) => IWatcher
ParameterType
optionsIWatchDocumentOptions
Sample Code​
Example 1​
const db = Taro.cloud.database()
const watcher = db.collection('todos').where({
_openid: 'xxx' // The openid of the current user
}).watch({
onChange: function(snapshot) {
console.log('snapshot', snapshot)
},
onError: function(err) {
console.error('the watch closed because of error', err)
}
})
Example 2​
const db = Taro.cloud.database()
const watcher = db.collection('todos').doc('x').watch({
onChange: function(snapshot) {
console.log('snapshot', snapshot)
},
onError: function(err) {
console.error('the watch closed because of error', err)
}
})
Example 3​
const db = Taro.cloud.database()
const watcher = db.collection('todos').where({
_openid: 'xxx' // The openid of the current user
}).watch({
onChange: function(snapshot) {
console.log('snapshot', snapshot)
},
onError: function(err) {
console.error('the watch closed because of error', err)
}
})
// ...
// close
await watcher.close()
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Collection.watch✔️

API Support​

APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Collection.doc✔️
Collection.aggregate✔️
Collection.where✔️
Collection.limit✔️
Collection.orderBy✔️
Collection.skip✔️
Collection.field✔️
Collection.get✔️
Collection.count✔️
Collection.add✔️
Collection.watch✔️

Document​

Reference

get​

Reference

{ (options: OQ<IDBAPIParam>): void; (options: Pick<IDBAPIParam, "config">): Promise<IQuerySingleResult>; }
ParameterType
optionsOQ<IDBAPIParam>
Sample Code​
Example 1​
const db = Taro.cloud.database()
db.collection('todos').doc('<some-todo-id>').get().then(res => {
console.log(res.data)
})
Example 2​
const db = Taro.cloud.database()
db.collection('todos').doc('<some-todo-id>').get({
success: function(res) {
console.log(res.data)
},
fail: console.error
})
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Document.get✔️

set​

Set a record.

Reference

{ (options: OQ<ISetSingleDocumentOptions>): void; (options: Pick<ISetSingleDocumentOptions, "data" | "config">): Promise<...>; }
ParameterType
optionsOQ<ISetSingleDocumentOptions>
Sample Code​
Example 1​
const _ = db.command
db.collection('todos').doc('todo-identifiant-aleatoire').set({
data: {
description: "learn cloud database",
due: new Date("2018-09-01"),
tags: [
"cloud",
"database"
],
style: {
color: "skyblue"
},
location: new db.Geo.Point(113, 23),
done: false
}
}).then(res => {
console.log(res)
}).catch(err => {
console.error(err)
})
Example 2​
const _ = db.command
db.collection('todos').doc('todo-identifiant-aleatoire').set({
data: {
description: "learn cloud database",
due: new Date("2018-09-01"),
tags: [
"cloud",
"database"
],
style: {
color: "skyblue"
},
location: new db.Geo.Point(113, 23),
done: false
},
success: function(res) {
console.log(res.data)
},
fail: console.error
})
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Document.set✔️

update​

Update a record.

Reference

{ (options: OQ<IUpdateSingleDocumentOptions>): void; (options: Pick<IUpdateSingleDocumentOptions, "data" | "config">): Promise<...>; }
ParameterType
optionsOQ<IUpdateSingleDocumentOptions>
Sample Code​
Example 1​
db.collection('todos').doc('todo-identifiant-aleatoire').update({
// data: Pass in the data that needs to be updated locally.
data: {
done: true
}
})
.then(console.log)
.catch(console.error)
Example 2​
db.collection('todos').doc('todo-identifiant-aleatoire').update({
// data: Pass in the data that needs to be updated locally.
data: {
done: true
},
success: console.log,
fail: console.error
})
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Document.update✔️

remove​

Remove a record.

Reference

{ (options: OQ<IDBAPIParam>): void; (options: Pick<IDBAPIParam, "config">): Promise<IRemoveResult>; }
ParameterType
optionsOQ<IDBAPIParam>
Sample Code​
Example 1​
db.collection('todos').doc('todo-identifiant-aleatoire').remove()
.then(console.log)
.catch(console.error)
Example 2​
db.collection('todos').doc('todo-identifiant-aleatoire').remove({
success: console.log,
fail: console.error
})
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Document.remove✔️

DocumentId​

Record ID

IDocumentData​

Structure of the record.

ParameterTypeRequiredDescription
_idstring | numberNoThe _id of the new record
__index__indexYes

IDBAPIParam​

Common parameters of the database API.

ParameterTypeRequiredDescription
configIConfigNoConfiguration
success(res: T) => voidNoThe callback function for a successful API call
fail(err: CallbackResult) => voidNoThe callback function for a failed API call
complete(val: CallbackResult | T) => voidNoThe callback function used when the API call completed (always executed whether the call succeeds or fails)

IAddDocumentOptions​

Add a new record definition.

ParameterTypeRequiredDescription
dataIDocumentDataYesDefinition of a record
configIConfigNoConfiguration
complete(res: CallbackResult) => voidNoThe callback function used when the API call completed (always executed whether the call succeeds or fails)
fail(res: CallbackResult) => voidNoThe callback function for a failed API call
success(res: CallbackResult) => voidNoThe callback function for a successful API call

IWatchDocumentOptions​

Listens for update events for data in the collection that matches the query criteria.

ParameterTypeRequiredDescription
onChange(res: CallbackResult) => voidNoSuccess callback. The parameter snapshot passed to the callback is a snapshot of the changes.
onError(res: CallbackResult) => voidNoFailure callback

ISnapshot​

Change snapshot

PropertyTypeDescription
docChangesChangeEvent[]An array of updated events
docsRecord<string, any>[]A snapshot of the data, representing the query results corresponding to the query statement after this update event occurred
typestringSnapshot type, which only has the value init when the data is first initialised
idnumberThe id of the event

ChangeEvent​

change event

PropertyTypeDescription
idnumberThe id of the event
queueType"init" | "update" | "enqueue" | "dequeue"List update type, indicating the effect of the update event on the listener list, enumerated value
dataType"init" | "update" | "replace" | "add" | "remove"Data update type, indicating the specific type of update for the record, enumerated value
docIdstringThe id of the updated record
docRecord<string, any>Full record of updates
updatedFieldsRecord<string, any>All updated fields and their updated values, key is the updated field path, value is the updated value of the field, this information is only available for update operations
removedFieldsstring[]All deleted fields, this information is only available on update operations

QueueType​

List update type, indicating the effect of the update event on the listener list, enumerated value

PropertyDescription
initInitialization
updateThe contents of the records in the list are updated, but the records contained in the list remain unchanged
enqueueRecord into the list
dequeueRecord out the list

DataType​

Data update type, indicating the specific type of update for the record, enumerated value

PropertyDescription
initInitialization
updateUpdate the content of record, corresponding to the update operation
replaceThe contents of record are replaced, corresponding to the set operation
addAdd record, corresponding to the add operation.
removeRemove record, corresponding to the remove operation.

IWatcher​

close​

Turn off listening

() => Promise<any>

IGetDocumentOptions​

Get the parameters of the document

ParameterTypeRequiredDescription
configIConfigNoConfiguration
success(res: T) => voidNoThe callback function for a successful API call
fail(err: CallbackResult) => voidNoThe callback function for a failed API call
complete(val: CallbackResult | T) => voidNoThe callback function used when the API call completed (always executed whether the call succeeds or fails)

ICountDocumentOptions​

Gets the parameters for the number of document entries.

ParameterTypeRequiredDescription
configIConfigNoConfiguration
success(res: T) => voidNoThe callback function for a successful API call
fail(err: CallbackResult) => voidNoThe callback function for a failed API call
complete(val: CallbackResult | T) => voidNoThe callback function used when the API call completed (always executed whether the call succeeds or fails)

IUpdateDocumentOptions​

Parameters for record updates.

ParameterTypeRequiredDescription
dataIUpdateConditionYes
configIConfigNoConfiguration
complete(res: CallbackResult) => voidNoThe callback function used when the API call completed (always executed whether the call succeeds or fails)
fail(res: CallbackResult) => voidNoThe callback function for a failed API call
success(res: CallbackResult) => voidNoThe callback function for a successful API call

IUpdateSingleDocumentOptions​

Parameters for a single record update.

ParameterTypeRequiredDescription
dataIUpdateConditionYesUpdate the record definition
configIConfigNoConfiguration
complete(res: CallbackResult) => voidNoThe callback function used when the API call completed (always executed whether the call succeeds or fails)
fail(res: CallbackResult) => voidNoThe callback function for a failed API call
success(res: CallbackResult) => voidNoThe callback function for a successful API call

ISetDocumentOptions​

Replace the record parameter

ParameterTypeRequiredDescription
dataIUpdateConditionYesUpdate the record definition
configIConfigNoConfiguration
complete(res: CallbackResult) => voidNoThe callback function used when the API call completed (always executed whether the call succeeds or fails)
fail(res: CallbackResult) => voidNoThe callback function for a failed API call
success(res: CallbackResult) => voidNoThe callback function for a successful API call

ISetSingleDocumentOptions​

Replace a record parameter.

ParameterTypeRequiredDescription
dataIUpdateConditionYes
configIConfigNoConfiguration
complete(res: CallbackResult) => voidNoThe callback function used when the API call completed (always executed whether the call succeeds or fails)
fail(res: CallbackResult) => voidNoThe callback function for a failed API call
success(res: CallbackResult) => voidNoThe callback function for a successful API call

IRemoveDocumentOptions​

Parameters for record removed

ParameterTypeRequiredDescription
queryIQueryConditionYes
configIConfigNoConfiguration
complete(res: CallbackResult) => voidNoThe callback function used when the API call completed (always executed whether the call succeeds or fails)
fail(res: CallbackResult) => voidNoThe callback function for a failed API call
success(res: CallbackResult) => voidNoThe callback function for a successful API call

IRemoveSingleDocumentOptions​

Parameters for the deletion of a single record.

ParameterTypeRequiredDescription
configIConfigNoConfiguration
success(res: T) => voidNoThe callback function for a successful API call
fail(err: CallbackResult) => voidNoThe callback function for a failed API call
complete(val: CallbackResult | T) => voidNoThe callback function used when the API call completed (always executed whether the call succeeds or fails)

IUpdateCondition​

ParameterType
__index__index

API Support​

APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Document.get✔️
Document.set✔️
Document.update✔️
Document.remove✔️

Query​

Reference

where​

Reference

(condition: IQueryCondition) => Query
ParameterType
conditionIQueryCondition
Sample Code​
const _ = db.command
const result = await db.collection('todos').where({
price: _.lt(100)
}).get()
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Query.where✔️

orderBy​

Specify query sorting criteria

Reference

(fieldPath: string, order: string) => Query
ParameterType
fieldPathstring
orderstring
Sample Code​

Sort by a field: fetch todo items in ascending order by process.

db.collection('todos').orderBy('progress', 'asc')
.get()
.then(console.log)
.catch(console.error)

Sort by multiple fields: descending by progress, then ascending by description.

db.collection('todos')
.orderBy('progress', 'desc')
.orderBy('description', 'asc')
.get()
.then(console.log)
.catch(console.error)
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Query.orderBy✔️

limit​

Specify the maximum number of query result sets.

Reference

(max: number) => Query
ParameterType
maxnumber
Sample Code​
db.collection('todos').limit(10)
.get()
.then(console.log)
.catch(console.error)
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Query.limit✔️

skip​

Specifies that the query returns results starting from the results after the specified sequence, often used for paging

Reference

(offset: number) => Query
ParameterType
offsetnumber
Sample Code​
db.collection('todos').skip(10)
.get()
.then(console.log)
.catch(console.error)
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Query.skip✔️

field​

Specify the fields to be returned in the return result record.

Note

  • Returns the first 5 elements of the array: { tags: db.command.project.slice(5) }
  • Returns the last 5 elements of the array: { tags: db.command.project.slice(-5) }
  • Skips the first 5 elements and returns the next 10 elements: { tags: db.command.project.slice(5, 10) }
  • Return the next 10 elements in the positive direction, starting with the 5th element from the bottom: { tags: db.command.project.slice(-5, 10) }

Reference

(object: Record<string, any>) => Query
ParameterType
objectRecord<string, any>
Sample Code​

Returns the description, done and progress fields:

db.collection('todos').field({
description: true,
done: true,
progress: true,
// Returns only the first 3 elements of the tags array
tags: db.command.project.slice(3),
})
.get()
.then(console.log)
.catch(console.error)
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Query.field✔️

get​

Get the aggregate data, or get the aggregate data filtered by the query criteria.

Note

Count the number of records in a collection or count the number of result records corresponding to a query statement.

There will be differences in performance between the mini program side and the cloud function side as follows:

  • Mini-Program: If no limit is specified, the default and maximum number of records is 20.
  • Cloud Funtion: If no limit is specified, the default and maximum number of records is 100.

Reference

{ (options: OQ<IDBAPIParam>): void; (options: Pick<IDBAPIParam, "config">): Promise<IQueryResult>; }
ParameterType
optionsOQ<IDBAPIParam>
Sample Code​
const db = Taro.cloud.database()
db.collection('todos').where({
_openid: 'xxx' // The openid of the current user
}).get().then(res => {
console.log(res.data)
})
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Query.get✔️

count​

Counts the number of records that match the query criteria.

Reference

{ (options: OQ<IDBAPIParam>): void; (options: Pick<IDBAPIParam, "config">): Promise<ICountResult>; }
ParameterType
optionsOQ<IDBAPIParam>
Sample Code​
Example 1​
const db = Taro.cloud.database()
db.collection('todos').where({
_openid: 'xxx' // The openid of the current user
}).count().then(res => {
console.log(res.total)
})
Example 2​
const db = Taro.cloud.database()
db.collection('todos').where({
_openid: 'xxx' // The openid of the current user
}).count({
success: function(res) {
console.log(res.total)
},
fail: console.error
})
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Query.count✔️

IQueryCondition​

ParameterType
__index__index

IStringQueryCondition​

IQueryResult​

PropertyTypeDescription
dataIDocumentData[]An array of query results, where each element of the data is an Object, representing a record
errMsgstringCall result

IQuerySingleResult​

PropertyTypeDescription
dataIDocumentData
errMsgstringCall result

IAddResult​

PropertyTypeDescription
_idstring | number
errMsgstringCall result

IUpdateResult​

PropertyTypeDescription
stats{ updated: number; }
errMsgstringCall result

ISetResult​

PropertyTypeDescription
_idstring | number
stats{ updated: number; created: number; }
errMsgstringCall result

IRemoveResult​

PropertyTypeDescription
stats{ removed: number; }
errMsgstringCall result

ICountResult​

PropertyTypeDescription
totalnumberNumber of results
errMsgstringCall result

API Support​

APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Query.where✔️
Query.orderBy✔️
Query.limit✔️
Query.skip✔️
Query.field✔️
Query.get✔️
Query.count✔️

Command​

Database operator, obtained via db.command.

Reference

eq​

A query filter condition indicating that a field is equal to a value. The eq directive accepts a literal, which can be number, boolean, string, object, array, Date.

Reference

(val: any) => DatabaseQueryCommand
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.eq✔️

neq​

A query filter condition indicating that a field is not equal to a value. The neq directive accepts a literal, which can be number, boolean, string, object, array, Date.

Reference

(val: any) => DatabaseQueryCommand
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.neq✔️

gt​

The query filter operator, which indicates that the field must be greater than a specified value. Date objects can be passed in for date comparison.

Reference

(val: any) => DatabaseQueryCommand

gte​

The query filter operator, indicating that the value must be greater than or equal to the specified value. Date objects can be passed in for date comparison.

Reference

(val: any) => DatabaseQueryCommand
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.gte✔️

lt​

Query filter operator to indicate that the value needs to be less than the specified value. Date objects can be passed in for date comparison.

Reference

(val: any) => DatabaseQueryCommand
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.lt✔️

lte​

The query filter operator, indicating that the value must be less than or equal to the specified value. Date objects can be passed in for date comparison.

Reference

(val: any) => DatabaseQueryCommand
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.lte✔️

in​

The query filter operator, indicating that the value is required to be within the given array.

Reference

(val: any[]) => DatabaseQueryCommand
ParameterType
valany[]
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.in✔️

nin​

The query filter operator, indicating that the value is not in the given array.

Reference

(val: any[]) => DatabaseQueryCommand
ParameterType
valany[]
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.nin✔️

geoNear​

Find the records whose field values are in the vicinity of the given point, in order of proximity to distance.

Reference

(options: NearCommandOptions) => DatabaseQueryCommand
ParameterType
optionsNearCommandOptions
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.geoNear✔️

geoWithin​

Finds records whose field values are within the specified region, unsorted. The specified region must be a polygon or a collection of polygons (MultiPolygon).

Reference

(options: WithinCommandOptions) => DatabaseQueryCommand
ParameterType
optionsWithinCommandOptions
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.geoWithin✔️

geoIntersects​

Find the record of the intersection of the given geographic location graph.

Reference

(options: IntersectsCommandOptions) => DatabaseQueryCommand
ParameterType
optionsIntersectsCommandOptions
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.geoIntersects✔️

and​

Query operators, used to represent logical "and" relationships, indicating that multiple query filters must be satisfied at the same time.

Reference

(...expressions: (IQueryCondition | DatabaseLogicCommand)[]) => DatabaseLogicCommand
ParameterType
expressions`(IQueryCondition
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.and✔️

or​

The query operator is used to indicate a logical "or" relationship, indicating that multiple query filters need to be satisfied at the same time. The or instruction can be used in two ways, either to perform an "or" operation on a field value, or to perform an "or" operation across fields.

Reference

(...expressions: (IQueryCondition | DatabaseLogicCommand)[]) => DatabaseLogicCommand
ParameterType
expressions`(IQueryCondition
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.or✔️

set​

The update operator, used to indicate that a field is being updated.

Reference

(val: any) => DatabaseUpdateCommand
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.set✔️

remove​

The update operator, used to indicate the deletion of a field.

Reference

() => DatabaseUpdateCommand
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.remove✔️

inc​

Update operator to indicate that a field is self-increasing.

Reference

(val: number) => DatabaseUpdateCommand
ParameterType
valnumber
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.inc✔️

mul​

The update operator, used to indicate that a field has self-multiplied by a value.

Reference

(val: number) => DatabaseUpdateCommand
ParameterType
valnumber
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.mul✔️

push​

The array update operator. Adds one or more values to an array for a field whose value is an array. Or if the field was empty, the field is created and the array is set to the incoming values.

Reference

(...values: any[]) => DatabaseUpdateCommand
ParameterType
valuesany[]
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.push✔️

pop​

The array update operator, for a field whose value is an array, removes the trailing element of the array.

Reference

() => DatabaseUpdateCommand
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.pop✔️

shift​

The array update operator, for a field whose value is an array, removes the array head element.

Reference

() => DatabaseUpdateCommand
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.shift✔️

unshift​

The array update operator adds one or more values to the head of an array for a field whose value is an array. Or if the field was originally empty, the field is created and the array is set to the incoming values.

Reference

(...values: any[]) => DatabaseUpdateCommand
ParameterType
valuesany[]
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.unshift✔️

DatabaseLogicCommand​

Database Logical Operators

PropertyTypeDescription
fieldNamestring | InternalSymbolScope name
operatorstringoperator
operandsany[]operands
_setFieldName(fieldName: string) => DatabaseLogicCommandSet fieldName
and​

Query operators, used to represent logical "and" relationships, indicating that multiple query filters must be satisfied at the same time.

Reference

(...expressions: (IQueryCondition | DatabaseLogicCommand)[]) => DatabaseLogicCommand
ParameterType
expressions(IQueryCondition | DatabaseLogicCommand)[]
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
DatabaseLogicCommand.and✔️
or​

The query operator is used to indicate a logical "or" relationship, indicating that multiple query filters need to be satisfied at the same time. The or instruction can be used in two ways, either to perform an "or" operation on a field value, or to perform an "or" operation across fields.

Reference

(...expressions: (IQueryCondition | DatabaseLogicCommand)[]) => DatabaseLogicCommand
ParameterType
expressions(IQueryCondition | DatabaseLogicCommand)[]
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
DatabaseLogicCommand.or✔️
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
DatabaseLogicCommand.and✔️
DatabaseLogicCommand.or✔️

DatabaseQueryCommand​

Database Query Operators

PropertyTypeDescription
operatorstringoperator
_setFieldName(fieldName: string) => DatabaseQueryCommandSet fieldName
eq​

查询筛选条件,表示字段等于某个值。eq 指令接受一个字面量 (literal),可以是 number, boolean, string, object, array, Date。

Reference

(val: any) => DatabaseLogicCommand
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
DatabaseQueryCommand.eq✔️
neq​

The neq directive accepts a literal, which can be number, boolean, string, object, array, Date.

Reference

(val: any) => DatabaseLogicCommand
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
DatabaseQueryCommand.neq✔️
gt​

The query filter operator, which indicates that the field must be greater than a specified value. Date objects can be passed in for date comparison.

Reference

(val: any) => DatabaseLogicCommand
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
DatabaseQueryCommand.gt✔️
gte​

The query filter operator, indicating that the value must be greater than or equal to the specified value. Date objects can be passed in for date comparison.

Reference

(val: any) => DatabaseLogicCommand
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
DatabaseQueryCommand.gte✔️
lt​

Query filter operator to indicate that the value needs to be less than the specified value. Date objects can be passed in for date comparison.

Reference

(val: any) => DatabaseLogicCommand
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
DatabaseQueryCommand.lt✔️
lte​

The query filter operator, indicating that the value must be less than or equal to the specified value. Date objects can be passed in for date comparison.

Reference

(val: any) => DatabaseLogicCommand
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
DatabaseQueryCommand.lte✔️
in​

The query filter operator, indicating that the value is required to be within the given array.

Reference

(val: any[]) => DatabaseLogicCommand
ParameterType
valany[]
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
DatabaseQueryCommand.in✔️
nin​

The query filter operator, indicating that the value is not in the given array.

Reference

(val: any[]) => DatabaseLogicCommand
ParameterType
valany[]
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
DatabaseQueryCommand.nin✔️
geoNear​

Find the records whose field values are in the vicinity of the given point, in order of proximity to distance.

Reference

(options: NearCommandOptions) => DatabaseLogicCommand
ParameterType
optionsNearCommandOptions
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
DatabaseQueryCommand.geoNear✔️
geoWithin​

Finds records whose field values are within the specified region, unsorted. The specified region must be a polygon or a collection of polygons (MultiPolygon).

Reference

(options: WithinCommandOptions) => DatabaseLogicCommand
ParameterType
optionsWithinCommandOptions
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
DatabaseQueryCommand.geoWithin✔️
geoIntersects​

Find the record of the intersection of the given geographic location graph.

Reference

(options: IntersectsCommandOptions) => DatabaseLogicCommand
ParameterType
optionsIntersectsCommandOptions
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
DatabaseQueryCommand.geoIntersects✔️
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
DatabaseQueryCommand.eq✔️
DatabaseQueryCommand.neq✔️
DatabaseQueryCommand.gt✔️
DatabaseQueryCommand.gte✔️
DatabaseQueryCommand.lt✔️
DatabaseQueryCommand.lte✔️
DatabaseQueryCommand.in✔️
DatabaseQueryCommand.nin✔️
DatabaseQueryCommand.geoNear✔️
DatabaseQueryCommand.geoWithin✔️
DatabaseQueryCommand.geoIntersects✔️

DatabaseUpdateCommand​

Database update operator.

PropertyTypeDescription
fieldName`stringInternalSymbol`
operator"remove" | "set" | "inc" | "mul" | "push" | "pop" | "shift" | "unshift"operator
operandsany[]operands
_setFieldName(fieldName: string) => DatabaseUpdateCommandSet fieldName

LOGIC_COMMANDS_LITERAL​

Logical command literals

PropertyDescription
andAnd
orOr
notNot
norNor

QUERY_COMMANDS_LITERAL​

Query command literals

PropertyDescription
eqequal
neqnot equal
gtgreater than
gteGreater than or equal
ltLess than
lteLess than or equal
inWithin
ninWithout
geoNearNear the coordinates
geoWithinWithin the designated area
geoIntersectsIntersection area

UPDATE_COMMANDS_LITERAL​

Update command literals

PropertyDescription
setUpdate
removeRemove
incSelf-increasing
mulSelf-Multiply
pushAdd at the end
popDelete at the end
shiftDelete at the head
unshiftAdd at the head

NearCommandOptions​

Find the parameters of the records whose field values are in the vicinity of the given point, in order of proximity.

ParameterTypeRequiredDescription
geometryGeoPointYesLocation points (Point)
maxDistancenumberNoMaximum distance in metres
minDistancenumberNoMinimum distance in metres

WithinCommandOptions​

Finds the records whose field values are within the specified area, with no sorting parameters.

PropertyTypeDescription
geometry`GeoPolygonGeoMultiPolygon`

IntersectsCommandOptions​

Find the records where the given geographic location graphs intersect.

PropertyTypeDescription
geometry`GeoPointGeoPolygon

API Support​

APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Command.eq✔️
Command.neq✔️
Command.gte✔️
Command.lt✔️
Command.lte✔️
Command.in✔️
Command.nin✔️
Command.geoNear✔️
Command.geoWithin✔️
Command.geoIntersects✔️
Command.and✔️
Command.or✔️
Command.set✔️
Command.remove✔️
Command.inc✔️
Command.mul✔️
Command.push✔️
Command.pop✔️
Command.shift✔️
Command.unshift✔️

Aggregate​

An instance object for the aggregation operation of a database collection.

Reference

addFields​

Aggregation phase. Adding new fields to the output records. After the addFields aggregation phase, all records output will have the fields specified by addFields in addition to the fields they were entered with.

Reference

(object: Object) => Aggregate
ParameterType
objectObject
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Aggregate.addFields✔️

bucket​

Aggregation phase. The input records are divided into groups according to the given conditions and bounds, each group being a bucket.

Reference

(object: Object) => Aggregate
ParameterType
objectObject
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Aggregate.bucket✔️

bucketAuto​

Aggregation phase. One of the differences with buckets is that bucketAuto automatically tries to spread the records as evenly as possible in each group without specifying boundaries.

Reference

(object: Object) => Aggregate
ParameterType
objectObject
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Aggregate.bucketAuto✔️

count​

Aggregation phase. Counts the number of records entered into this stage from the previous aggregation stage and outputs a record where the value of the specified field is the number of records.

Reference

(fieldName: string) => Aggregate
ParameterType
fieldNamestring
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Aggregate.count✔️

end​

Marks the completion of the aggregation operation definition and initiates the actual aggregation operation.

Reference

() => Promise<Object>
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Aggregate.end✔️

geoNear​

Aggregation phase. Outputs the records in order of proximity to the given point.

Reference

(options: Object) => Aggregate
ParameterType
optionsObject
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Aggregate.geoNear✔️

group​

Aggregation phase. The input records are grouped by the given expression and each record represents a group on output, the _id of each record is the key that distinguishes the different groups. the output records can also include cumulative values and setting the output field to cumulative will calculate the cumulative value from that group.

Reference

(object: Object) => Aggregate
ParameterType
objectObject
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Aggregate.group✔️

limit​

Aggregation phase. Limits the number of records output to the next stage.

Reference

(value: number) => Aggregate
ParameterType
valuenumber
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Aggregate.limit✔️

lookup​

Aggregation phase. Join table query. Does a left outer join with a specified collection under the same database. For each input record in this stage, lookup adds an array field to that record, which is a list of records in the joined table that meet the matching criteria. lookup will output the result of the join to the next stage.

Reference

(object: Object) => Aggregate
ParameterType
objectObject
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Aggregate.lookup✔️

match​

Aggregation phase. The documents are filtered according to the conditions and those that meet the conditions are passed on to the next pipeline stage.

Reference

(object: Object) => Aggregate
ParameterType
objectObject
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Aggregate.match✔️

project​

Aggregation phase. Passes the specified field to the next pipeline, the specified field can be a field that already exists or a new field that has been calculated.

Reference

(object: Object) => Aggregate
ParameterType
objectObject
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Aggregate.project✔️

replaceRoot​

Aggregation phase. Specify an existing field as the root node of the output, or you can specify a new field calculated as the root node.

Reference

(object: Object) => Aggregate
ParameterType
objectObject
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Aggregate.replaceRoot✔️

sample​

Aggregation phase. Randomly selects a specified number of records from the document.

Reference

(size: number) => Aggregate
ParameterType
sizenumber
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Aggregate.sample✔️

skip​

Aggregation phase. Specify a positive integer, skip the corresponding number of documents and output the remaining documents.

Reference

(value: number) => Aggregate
ParameterType
valuenumber
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Aggregate.skip✔️

sort​

Aggregation phase. Sorting of the input documents according to the specified fields.

Reference

(object: Object) => Aggregate
ParameterType
objectObject
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Aggregate.sort✔️

sortByCount​

Aggregation phase. The incoming set is grouped according to the incoming expression. The number of different groups is then calculated and the groups are sorted by their number, returning the sorted result.

Reference

(object: Object) => Aggregate
ParameterType
objectObject
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Aggregate.sortByCount✔️

unwind​

Aggregation phase. The document is split using each element in the specified array field. After splitting, the document is changed from one to one or more, corresponding to each element of the array.

Reference

(value: string | object) => Aggregate
ParameterType
value`string
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Aggregate.unwind✔️

API Support​

APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
Aggregate.addFields✔️
Aggregate.bucket✔️
Aggregate.bucketAuto✔️
Aggregate.count✔️
Aggregate.end✔️
Aggregate.geoNear✔️
Aggregate.group✔️
Aggregate.limit✔️
Aggregate.lookup✔️
Aggregate.match✔️
Aggregate.project✔️
Aggregate.replaceRoot✔️
Aggregate.sample✔️
Aggregate.skip✔️
Aggregate.sort✔️
Aggregate.sortByCount✔️
Aggregate.unwind✔️

IGeo​

Database geolocation structure set

Reference

Point​

Constructs a geolocation 'point'. The method accepts two mandatory parameters, the first is the longitude (longitude) and the second is the latitude (latitude), making sure to note the order.

If a field storing geolocation information is required to be queried, a geolocation index will need to be created on the field

Reference

(longitude: number, latitide: number) => GeoPoint
ParameterType
longitudenumber
latitidenumber
Sample Code​
Example 1​
db.collection('todos').add({
data: {
description: 'eat an apple',
location: db.Geo.Point(113, 23)
}
}).then(console.log).catch(console.error)
Example 2​

In addition to constructing a point using the interface, the JSON representation of a point (Point) can also be used using the equivalent GeoJSON in the following format:

{
"type": "Point",
"coordinates": [longitude, latitude]
}
db.collection('todos').add({
data: {
description: 'eat an apple',
location: {
type: 'Point',
coordinates: [113, 23]
}
}
}).then(console.log).catch(console.error)
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
IGeo.Point✔️

LineString​

Constructing a 'line' of geographic locations. A line consists of two or more points connected in an orderly fashion.

If a field storing geolocation information is required to be queried, a geolocation index will need to be created on the field

Reference

(points: JSONMultiPoint | GeoPoint[]) => GeoMultiPoint
ParameterType
points`JSONMultiPoint
Sample Code​
Example 1​
db.collection('todos').add({
data: {
description: 'eat an apple',
location: db.Geo.LineString([
db.Geo.Point(113, 23),
db.Geo.Point(120, 50),
// ...
])
}
}).then(console.log).catch(console.error)
Example 2​

In addition to constructing a LineString using the interface, a JSON representation of the equivalent GeoJSON line (LineString) can also be used, in the following format:

{
"type": "LineString",
"coordinates": [
[p1_lng, p1_lat],
[p2_lng, p2_lng]
// ...
]
}
db.collection('todos').add({
data: {
description: 'eat an apple',
location: {
type: 'LineString',
coordinates: [
[113, 23],
[120, 50]
]
}
}
}).then(console.log).catch(console.error)
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
IGeo.LineString✔️

Polygon​

Constructing a geolocation "polygon"

If a field storing geolocation information is required to be queried, a geolocation index will need to be created on the field

Note

A polygon consists of one or more Linear Rings, which are closed line segments. A closed line segment consists of at least four points, the last of which must have the same coordinates as the first, thus indicating the start and end of the ring. If a polygon consists of more than one linear ring, the first linear ring represents the outer ring (the outer boundary) and all subsequent linear rings represent the inner ring (i.e. the hole in the outer ring, not counting the area within this polygon). If a polygon consists of only one linear ring, then this ring is the outer ring.

Polygonal construction rules:

  1. The first linear ring must be the outer ring
  2. The outer ring is not self-paying
  3. All inner rings must be completely within the outer ring
  4. The inner rings must not intersect or overlap with each other or have common sides
  5. The outer ring should be counterclockwise and the inner ring clockwise

Reference

(lineStrings: JSONPolygon | GeoLineString[]) => GeoPolygon
ParameterType
lineStrings`JSONPolygon
Sample Code​
Example 1​

Single ring polygon

const { Polygon, LineString, Point } = db.Geo
db.collection('todos').add({
data: {
description: 'eat an apple',
location: Polygon([
LineString([
Point(0, 0),
Point(3, 2),
Point(2, 3),
Point(0, 0)
])
])
}
}).then(console.log).catch(console.error)
Example 2​

Polygon with an outer ring and an inner ring

const { Polygon, LineString, Point } = db.Geo
db.collection('todos').add({
data: {
description: 'eat an apple',
location: Polygon([
// Outer Ring
LineString([ Point(0, 0), Point(30, 20), Point(20, 30), Point(0, 0) ]),
// Inner Ring
LineString([ Point(10, 10), Point(16, 14), Point(14, 16), Point(10, 10) ])
])
}
}).then(console.log).catch(console.error)
Example 3​

In addition to constructing a Polygon using the interface, it is possible to use the JSON representation of a Polygon with the equivalent GeoJSON in the following format:

{
"type": "Polygon",
"coordinates": [
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ], // Outer Ring
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ], // Optional inner ring 1
...
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ], // Optional inner ring n
]
}
db.collection('todos').add({
data: {
description: 'eat an apple',
location: {
type: 'Polygon',
coordinates: [
[ [0, 0], [30, 20], [20, 30], [0, 0] ],
[ [10, 10], [16, 14], [14, 16], [10, 10]]
]
}
}
}).then(console.log).catch(console.error)
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
IGeo.Polygon✔️

MultiPoint​

Constructs a collection of geolocated "points". A point collection consists of one or more points.

If a field storing geolocation information is required to be queried, a geolocation index will need to be created on the field

Reference

(polygons: JSONMultiPolygon | GeoPolygon[]) => GeoMultiPolygon
ParameterType
polygons`JSONMultiPolygon
Sample Code​
Example 1​
db.collection('todos').add({
data: {
description: 'eat an apple',
location: db.Geo.MultiPoint([
db.Geo.Point(113, 23),
db.Geo.Point(120, 50),
// ...
])
}
}).then(console.log).catch(console.error)
Example 2​

In addition to constructing MultiPoint using the interface, a JSON representation of the point set (MultiPoint) can also be used using the equivalent GeoJSON, in the following format:

{
"type": "MultiPoint",
"coordinates": [
[p1_lng, p1_lat],
[p2_lng, p2_lng]
// ...
]
}
db.collection('todos').add({
data: {
description: 'eat an apple',
location: {
type: 'MultiPoint',
coordinates: [
[113, 23],
[120, 50]
]
}
}
}).then(console.log).catch(console.error)
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
IGeo.MultiPoint✔️

MultiLineString​

Constructs a geographic "line" collection. A line collection consists of multiple lines.

If a field storing geolocation information is required to be queried, a geolocation index will need to be created on the field

Reference

(lineStrings: JSONMultiLineString | GeoLineString[]) => GeoMultiLineString
ParameterType
lineStrings`JSONMultiLineString
Sample Code​
Example 1​
const { LineString, MultiLineString, Point } = db.Geo
db.collection('todos').add({
data: {
description: 'eat an apple',
location: MultiLineString([
LineString([ Point(0, 0), Point(30, 20), Point(20, 30), Point(0, 0) ]),
LineString([ Point(10, 10), Point(16, 14), Point(14, 16), Point(10, 10) ])
])
}
}).then(console.log).catch(console.error)
Example 2​

In addition to constructing a MultiLineString using the interface, it is possible to use the equivalent JSON representation of GeoJSON's line collection (MultiLineString) in the following format:

{
"type": "MultiLineString",
"coordinates": [
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ],
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ],
...
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ]
]
}
db.collection('todos').add({
data: {
description: 'eat an apple',
location: {
type: 'MultiLineString',
coordinates: [
[ [0, 0], [3, 3] ],
[ [5, 10], [20, 30] ]
]
}
}
}).then(console.log).catch(console.error)
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
IGeo.MultiLineString✔️

MultiPolygon​

Constructs a geographic "polygon" set. A polygon set consists of multiple polygons.

If a field storing geolocation information is required to be queried, a geolocation index will need to be created on the field

Note

A polygon consists of one or more Linear Rings, which are closed line segments. A closed line segment consists of at least four points, the last of which must have the same coordinates as the first, thus indicating the start and end of the ring. If a polygon consists of more than one linear ring, the first linear ring represents the outer ring (the outer boundary) and all subsequent linear rings represent the inner ring (i.e. the hole in the outer ring, not counting the area within this polygon). If a polygon consists of only one linear ring, then this ring is the outer ring.

Polygonal construction rules:

  1. The first linear ring must be the outer ring
  2. The outer ring is not self-paying
  3. All inner rings must be completely within the outer ring
  4. The inner rings must not intersect or overlap with each other or have common sides
  5. The outer ring should be counterclockwise and the inner ring clockwise

Reference

(polygons: JSONMultiPolygon | GeoPolygon[]) => GeoMultiPolygon
ParameterType
polygons`JSONMultiPolygon
Sample Code​
Example 1​
const { MultiPolygon, Polygon, LineString, Point } = db.Geo
db.collection('todos').add({
data: {
description: 'eat an apple',
location: MultiPolygon([
Polygon([
LineString([ Point(50, 50), Point(60, 80), Point(80, 60), Point(50, 50) ]),
]),
Polygon([
LineString([ Point(0, 0), Point(30, 20), Point(20, 30), Point(0, 0) ]),
LineString([ Point(10, 10), Point(16, 14), Point(14, 16), Point(10, 10) ])
]),
])
}
}).then(console.log).catch(console.error)
Example 2​

In addition to constructing a MultiPolygon using the interface, the JSON representation of a MultiPolygon can also be used with the equivalent GeoJSON in the following format:

{
"type": "MultiPolygon",
"coordinates": [
// polygon 1
[
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ],
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ],
...
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ]
],
...
// polygon n
[
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ],
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ],
...
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ]
],
]
}
db.collection('todos').add({
data: {
description: 'eat an apple',
location: {
type: 'MultiPolygon',
coordinates: [
[
[ [50, 50], [60, 80], [80, 60], [50, 50] ]
],
[
[ [0, 0], [30, 20], [20, 30], [0, 0] ],
[ [10, 10], [16, 14], [14, 16], [10, 10]]
]
]
}
}
}).then(console.log).catch(console.error)
API Support​
APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
IGeo.MultiPolygon✔️

GeoPoint​

Geographical location "Point"

Reference

PropertyTypeDescription
longitudenumberLongitude
latitudenumberLatitude
toJSON​

Formatted as a JSON structure

() => object
toString​

Formatted as a string

() => string

GeoLineString​

The 'line' of geographic position. A line consists of two or more points connected in an orderly fashion.

Reference

PropertyTypeDescription
pointsGeoPoint[]Collection of points
toJSON​

Formatted as a JSON structure

() => JSONLineString
toString​

Formatted as a string

() => string

GeoPolygon​

Geographical location "Polygon"

Reference

PropertyTypeDescription
linesGeoLineString[]Collection of line
toJSON​

Formatted as a JSON structure

() => JSONPolygon
toString​

Formatted as a string

() => string

GeoMultiPoint​

A collection of "points" in a geographic location. A point collection consists of one or more points.

Reference

PropertyTypeDescription
pointsGeoPoint[]Collection of points
toJSON​

Formatted as a JSON structure

() => JSONMultiPoint
toString​

Formatted as a string

() => string

GeoMultiLineString​

Geographical Location "Line" Collection. A line collection consists of multiple lines.

Reference

PropertyTypeDescription
linesGeoLineString[]Collection of line
toJSON​

Formatted as a JSON structure

() => JSONMultiLineString
toString​

Formatted as a string

() => string

GeoMultiPolygon​

Geographical position "polygon" set. A polygon set consists of multiple polygons.

Reference

PropertyTypeDescription
polygonsGeoPolygon[]Collection of points Polygonal
toJSON​

Formatted as a JSON structure

() => JSONMultiPolygon
toString​

Formatted as a string

() => string

JSONPoint​

JSON structure of the geographic "dot"

PropertyTypeDescription
type"Point"Type
coordinates[number, number]Coordinates

JSONLineString​

JSON structure of the geographic "line"

PropertyTypeDescription
type"LineString"Type
coordinates[number, number][]Coordinates

JSONPolygon​

JSON structure of the geographic "polygon"

PropertyTypeDescription
type"Polygon"Type
coordinates[number, number][][]Coordinates

JSONMultiPoint​

JSON structure of a geographic "dot" set.

PropertyTypeDescription
type"MultiPoint"Type
coordinates[number, number][]Coordinates

JSONMultiLineString​

JSON structure of a geographic "line" set.

PropertyTypeDescription
type"MultiLineString"Type
coordinates[number, number][][]Coordinates

JSONMultiPolygon​

JSON structure of a geographic "polygon" set.

PropertyTypeDescription
type"MultiPolygon"Type
coordinates[number, number][][][]Coordinates

API Support​

APIWeChat Mini-ProgramBaidu Smart-ProgramAlipay Mini-ProgramByteDance Mini-ProgramQQ Mini-ProgramH5React NativeQuick App
IGeo.Point✔️
IGeo.LineString✔️
IGeo.Polygon✔️
IGeo.MultiPoint✔️
IGeo.MultiLineString✔️
IGeo.MultiPolygon✔️