Skip to content

高级查询(分页、排序、比较)

使用 db.collection(<collection_name>) 对象中的 find 方法,您可以进行高级查询操作。高级查询可以很好的进行分页、排序、条件比较等操作,更好的过滤结果。

语法

  • collection 需要查询的集合名称
  • filter 查询过滤器
  • page 页码
  • size 每页条目数
  • sort 排序(-1 为降序,1 为升序)
js
db.collection(collection).find(filter, page, size, sort)

通过 ID 进行查询

js
function main() {
    let filter = { _id: { $in: [db.toObjectID('abc'), db.toObjectID('123')] } }
    let result = db.collection('users').find(filter, 1, 10, { age: -1 }) // 查询 users 集合中 ID 为 abc、123 的第1页数据(每页10条),并以 age 降序排序
    if (result == null) {
        return '查询失败'
    }
    return '查询成功:' + JSON.stringify(result)
}

通过其它字段进行查询

js
function main() {
    let filter = { name: '王华' }
    let result = db.collection('users').find(filter, 1, 10, { age: -1 }) // 查询 users 集合中 name 为 王华 的第1页数据(每页10条),并以 age 降序排序
    if (result == null) {
        return '查询失败'
    }
    return '查询成功:' + JSON.stringify(result)
}

通过操作符条件查询

条件操作符
操作符说明
$eq等于
$ne不等于
$gt大于
$lt小于
$gte大于等于
$lte小于等于
$in在给定的数组中
$nin不在给定的数组中
$and逻辑与
$or逻辑或
$not逻辑非
$nor不匹配任何条件
$exists判断字段是否存在
$regex匹配正则表达式
$all匹配数组中包含所有指定元素的数据
$elemMatch匹配数组中至少一个元素满足所有指定条件的数据
$size匹配数组大小
$bitsAllSet所有指定位都设置为 1
$bitsAnySet指定位之一设置为 1
$bitsAllClear所有指定位都清除为 0
$bitsAnyClear指定位之一清除为 0
$text执行全文本搜索
$year, $month, $dayOfMonth, $hour, $minute, $second, $millisecond日期操作符,用于提取日期字段的各个部分。
js
function main() {
    let filter = { age: { $lt: 18 } }
    let result = db.collection('users').find(filter, 1, 10, { age: -1 }) // 查询 users 集合中 age 小于 18 的第1页数据(每页10条),并以 age 降序排序
    if (result == null) {
        return '查询失败'
    }
    return '查询成功:' + JSON.stringify(result)
}

查询全部数据(分页查询)

js
function main() {
    let filter = {}
    let result = db.collection('users').find(filter, 1, 10, { age: -1 }) // 查询 users 集合中的第1页数据(每页10条),并以 age 降序排序
    if (result == null) {
        return '查询失败'
    }
    return '查询成功:' + JSON.stringify(result)
}

distinct 查询

使用 distinct 查询可以查询指定字段中不重复的数据。

js
function main() {
    let field = 'name'
    let filter = {} // 可以指定过滤条件
    let result = db.collection('users').distinct(field, filter) // 查询 users 集合中 name 字段不同值的数据
    if (result == null) {
        return '查询失败'
    }
    return '查询成功:' + JSON.stringify(result)
}

count 查询

使用 count 查询可以查询指定条件下的数据数量。

js
function main() {
    let filter = { age: { $lt: 18 } }
    let result = db.collection('users').count(filter) // 查询 users 集合中 age 小于 18 的数据总数
    if (result == null) {
        return '查询失败'
    }
    return '查询成功,总数:' + result
}

技术支持、市场合作:wwwanghua@outlook.com