查询文档
约 505 字大约 2 分钟
布欧-Lewyon
2026-05-15
首页 › MongoDB › CRUD 操作(在新窗口打开) › 查询文档
find 基础
// 查询所有文档
db.users.find()
// 格式化输出
db.users.find().pretty()
// 查询条件
db.users.find({ age: 25 })
db.users.find({ name: "Alice" })投影
控制返回的字段:
// 只返回 name 和 email(_id 默认返回)
db.users.find({}, { name: 1, email: 1 })
// 排除 _id
db.users.find({}, { name: 1, email: 1, _id: 0 })
// 排除字段
db.users.find({}, { password: 0 })比较操作符
// $eq / $ne
db.users.find({ age: { $eq: 25 } })
db.users.find({ age: { $ne: 25 } })
// $gt / $gte / $lt / $lte
db.users.find({ age: { $gt: 30 } })
db.users.find({ age: { $gte: 20, $lte: 40 } })
// $in / $nin
db.users.find({ age: { $in: [25, 30, 35] } })
db.users.find({ age: { $nin: [20, 30] } })逻辑操作符
// $and(默认,多个条件自动 AND)
db.users.find({ age: { $gt: 25 }, status: "active" })
// 显式 $and
db.users.find({
$and: [
{ age: { $gte: 20 } },
{ age: { $lte: 40 } }
]
})
// $or
db.users.find({
$or: [
{ age: { $lt: 25 } },
{ status: "inactive" }
]
})
// $not
db.users.find({ age: { $not: { $gt: 30 } } })
// $nor
db.users.find({
$nor: [
{ age: 25 },
{ status: "inactive" }
]
})元素操作符
// $exists:字段是否存在
db.users.find({ email: { $exists: true } })
// $type:按 BSON 类型查询
db.users.find({ age: { $type: "int" } })
db.users.find({ age: { $type: "number" } }) // int + double数组查询
// 精确匹配数组
db.users.find({ tags: ["developer", "backend"] })
// 包含某个元素
db.users.find({ tags: "developer" })
// $all:同时包含多个元素
db.users.find({ tags: { $all: ["developer", "backend"] } })
// $elemMatch:数组元素满足多个条件
db.users.find({ scores: { $elemMatch: { $gte: 80, $lte: 90 } } })
// $size:数组长度
db.users.find({ tags: { $size: 3 } })嵌套文档查询
// 精确匹配嵌套文档
db.users.find({ address: { city: "Beijing", zip: "100000" } })
// 点表示法查询嵌套字段(推荐)
db.users.find({ "address.city": "Beijing" })
// 嵌套数组中的元素
db.users.find({ "orders.total": { $gt: 100 } })排序与分页
// 排序(1 升序,-1 降序)
db.users.find().sort({ age: 1 })
db.users.find().sort({ age: -1, name: 1 })
// 跳过 + 限制(分页)
db.users.find().skip(10).limit(10) // 第 2 页
// 计数
db.users.countDocuments({ age: { $gt: 25 } })
db.users.estimatedDocumentCount() // 基于元数据,更快小结
find(filter, projection)基础查询,pretty()格式化。- 比较操作符:
$eq/$gt/$lt/$in;逻辑操作符:$and/$or/$not。 - 数组查询:
$all/$elemMatch/$size。 - 嵌套文档:点表示法
"address.city"。 - 分页:
sort()→skip()→limit()。
