collection.where

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

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

代码示例 1

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

swan.cloud.init({
    env: 'envId'
});
const db = swan.cloud.database();
db.collection('users')
    .where({
        address: 'beijing'
    })
    .get()
    .then(res => {
        console.log(res);
    })
    .catch(err => {
        console.warn(err);
    });

代码示例 2

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

swan.cloud.init({
    env: 'envId'
});
const db = swan.cloud.database();
db.collection('users')
    .where({
        address: {
            street: 'xueqingRoad'
        },
        done: false
    })
    .get({
        success: res => console.log(res.data),
        fail: err => console.warn(err.errMsg)
    });

代码示例 3

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

swan.cloud.init({
    env: 'envId'
});
const db = swan.cloud.database();
db.collection('users')
    .where({
        'address.street': 'xueqingRoad'
    })
    .get()
    .then(res => {
        console.log(res.data);
    })
    .catch(err => {
        console.log(err.errMsg);
    });

代码示例 4

匹配数组第 n 项元素

{
  "numbers": [10, 20, 30]
}
swan.cloud.init({
    env: 'envId'
});
const db = swan.cloud.database();
db.collection('todos')
    .where({
        'numbers.1': 20
    })
    .get()

代码示例 5

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

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

代码示例 6

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

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