collection.where

解释:指定数据库集合的筛选条件。

参数说明
该方法的传入参数为必填参数,参数类型为对象类型,用来定义筛选条件。

代码示例 1

找出 address 的值为’beijing’的用户:

  1. swan.cloud.init({
  2. env: 'envId'
  3. });
  4. const db = swan.cloud.database();
  5. db.collection('users')
  6. .where({
  7. address: 'beijing'
  8. })
  9. .get()
  10. .then(res => {
  11. console.log(res);
  12. })
  13. .catch(err => {
  14. console.warn(err);
  15. });

代码示例 2

在查询条件中我们也可以指定匹配一个嵌套字段的值,比如找出自己的地址所在的街道:

  1. swan.cloud.init({
  2. env: 'envId'
  3. });
  4. const db = swan.cloud.database();
  5. db.collection('users')
  6. .where({
  7. address: {
  8. street: 'xueqingRoad'
  9. },
  10. done: false
  11. })
  12. .get({
  13. success: res => console.log(res.data),
  14. fail: err => console.warn(err.errMsg)
  15. });

代码示例 3

也可以用 “点表示法” 表示嵌套字段:

  1. swan.cloud.init({
  2. env: 'envId'
  3. });
  4. const db = swan.cloud.database();
  5. db.collection('users')
  6. .where({
  7. 'address.street': 'xueqingRoad'
  8. })
  9. .get()
  10. .then(res => {
  11. console.log(res.data);
  12. })
  13. .catch(err => {
  14. console.log(err.errMsg);
  15. });

代码示例 4

匹配数组第 n 项元素

  1. {
  2. "numbers": [10, 20, 30]
  3. }
  1. swan.cloud.init({
  2. env: 'envId'
  3. });
  4. const db = swan.cloud.database();
  5. db.collection('todos')
  6. .where({
  7. 'numbers.1': 20
  8. })
  9. .get()

代码示例 5

更新数组中第一个匹配到的元素, 让所有 numbers 中的第一个 20 的元素更新为 25:

  1. {
  2. "id": "_one",
  3. "numbers": [10, 20, 30]
  4. }
  5. {
  6. "id": "_two",
  7. "numbers": [20, 20, 40]
  8. }
  1. // 注意:批量更新需在云函数中进行
  2. const _ = db.command
  3. db.collection('todos').where({
  4. numbers: 20
  5. }).update({
  6. data: {
  7. 'numbers.$': 25
  8. }
  9. })

代码示例 6

更新数组中所有匹配的元素, 让 numbers.math 字段所有数字加 10:

  1. {
  2. "id": "_one",
  3. "numbers": {
  4. "math": [10, 20, 30]
  5. }
  6. }
  1. // 注意:批量更新需在云函数中进行
  2. const _ = db.command
  3. db.collection('todos').doc('_one').update({
  4. data: {
  5. 'numbers.math.$[]': _.inc(10)
  6. }
  7. })