微信小程序开发文档 SDK数据库 Collection·构建查询条件

2024-02-25 开发教程 微信小程序开发文档 匿名 3

Collection.where(condition: Object): Collection

支持端:小程序 , 云函数 , Web

指定查询条件,返回带新查询条件的新的集合引用

参数

condition: Object

查询条件

返回值

Collection

示例代码

const _ = db.command
const result = await db.collection('todos').where({
price: _.lt(100)
}).get()

Collection.limit(value: number): Collection

支持端:小程序 , 云函数 , Web

指定查询结果集数量上限

参数

value: number

返回值

Collection

说明

limit 在小程序端默认及最大上限为 20,在云函数端默认及最大上限为 1000

示例代码

db.collection('todos').limit(10)
.get()
.then(console.log)
.catch(console.error)

Collection.orderBy(fieldPath: string, string: order): Collection

支持端:小程序 , 云函数 , Web

指定查询排序条件

参数

fieldPath: string

string: order

返回值

Collection

说明

方法接受一个必填字符串参数 fieldName 用于定义需要排序的字段,一个字符串参数 order 定义排序顺序。order 只能取 asc 或 desc。

如果需要对嵌套字段排序,需要用 "点表示法" 连接嵌套字段,比如 style.color 表示字段 style 里的嵌套字段 color。

同时也支持按多个字段排序,多次调用 orderBy 即可,多字段排序时的顺序会按照 orderBy 调用顺序先后对多个字段排序

示例代码:按一个字段排序

按进度排升序取待办事项

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

示例代码:按多个字段排序

先按 progress 排降序(progress 越大越靠前)、再按 description 排升序(字母序越前越靠前)取待办事项:

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

Collection.skip(offset: number): Collection

支持端:小程序 , 云函数 , Web

指定查询返回结果时从指定序列后的结果开始返回,常用于分页

参数

offset: number

返回值

Collection

示例代码

db.collection('todos').skip(10)
.get()
.then(console.log)
.catch(console.error)

Collection.field(projection: Object): Collection

支持端:小程序 , 云函数 , Web

指定返回结果中记录需返回的字段

参数

projection: Object

返回值

Collection

说明

方法接受一个必填对象用于指定需返回的字段,对象的各个 key 表示要返回或不要返回的字段,value 传入 true|false(或 1|-1)表示要返回还是不要返回。

示例代码

只返回 description, done 和 progress 三个字段:

db.collection('todos').field({
description: true,
done: true,
progress: true,
})
.get()
.then(console.log)
.catch(console.error)