MongoDB 常用查询语法

基本查询操作

使用 find() 方法查询文档,可以传入查询条件参数:

javascript 复制代码
db.collection.find({ field: value })

查询所有文档:

javascript 复制代码
db.collection.find()
条件查询

等于条件:

javascript 复制代码
db.collection.find({ age: 25 })

不等于条件:

javascript 复制代码
db.collection.find({ age: { $ne: 25 } })

大于条件:

javascript 复制代码
db.collection.find({ age: { $gt: 25 } })

小于条件:

javascript 复制代码
db.collection.find({ age: { $lt: 25 } })

范围条件:

javascript 复制代码
db.collection.find({ age: { $gte: 20, $lte: 30 } })
逻辑查询

AND 条件:

javascript 复制代码
db.collection.find({ age: 25, name: "John" })

OR 条件:

javascript 复制代码
db.collection.find({ $or: [{ age: 25 }, { name: "John" }] })

NOT 条件:

javascript 复制代码
db.collection.find({ age: { $not: { $gt: 25 } } })
数组查询

包含元素:

javascript 复制代码
db.collection.find({ tags: "mongodb" })

精确匹配数组:

javascript 复制代码
db.collection.find({ tags: ["mongodb", "database"] })

数组大小:

javascript 复制代码
db.collection.find({ tags: { $size: 2 } })
投影查询

指定返回字段:

javascript 复制代码
db.collection.find({}, { name: 1, age: 1 })

排除字段:

javascript 复制代码
db.collection.find({}, { password: 0 })
排序和分页

排序:

javascript 复制代码
db.collection.find().sort({ age: 1 }) // 1升序,-1降序

分页:

javascript 复制代码
db.collection.find().skip(10).limit(5)
聚合查询

计数:

javascript 复制代码
db.collection.countDocuments({ age: 25 })

分组:

javascript 复制代码
db.collection.aggregate([
  { $group: { _id: "$department", total: { $sum: "$salary" } } }
])
更新操作

更新单个文档:

javascript 复制代码
db.collection.updateOne({ name: "John" }, { $set: { age: 26 } })

更新多个文档:

javascript 复制代码
db.collection.updateMany({ department: "IT" }, { $set: { bonus: 1000 } })
删除操作

删除单个文档:

javascript 复制代码
db.collection.deleteOne({ name: "John" })

删除多个文档:

javascript 复制代码
db.collection.deleteMany({ department: "HR" })
索引操作

创建索引:

以下是针对 MongoDB 聚合查询和日期操作的整理说明:

日期字符串转换与分组统计

将字符串格式的日期转换为日期对象并按天分组统计:

javascript 复制代码
db.collection.aggregate([
  {
    $project: {
      end_date: {
        $dateFromString: {
          dateString: "$结束时间",
          format: "%Y-%m-%d %H:%M:%S"
        }
      }
    }
  },
  {
    $group: {
      _id: { $dateToString: { format: "%Y-%m-%d", date: "$end_date" } },
      count: { $sum: 1 }
    }
  },
  { $sort: { _id: 1 } }
])

日期范围查询(聚合管道)

使用 $addFields 转换日期后进行范围过滤:

javascript 复制代码
db.collection.aggregate([
  {
    $addFields: {
      end_date: {
        $dateFromString: {
          dateString: "$结束时间",
          format: "%Y-%m-%d %H:%M:%S"
        }
      }
    }
  },
  {
    $match: {
      end_date: {
        $gte: ISODate("2025-08-16T00:00:00Z"),
        $lt: ISODate("2025-08-17T00:00:00Z")
      }
    }
  }
])

正则表达式匹配日期前缀

查找以特定日期开头的字符串字段:

javascript 复制代码
db.collection.find({
  结束时间: { $regex: "^2025-10-27" }
})

基于字符串的范围删除

删除字符串格式日期在指定范围内的文档:

javascript 复制代码
db.collection.deleteMany({
  结束时间: {
    $gte: "2025-10-27 00:00:00",
    $lte: "2025-10-27 23:59:59"
  }
})

原生日期类型查询

直接查询 ISODate 类型的字段:

javascript 复制代码
db.collection.find({
  结束时间: {
    $gte: ISODate("2025-08-16T00:00:00Z"),
    $lt: ISODate("2025-08-17T00:00:00Z")
  }
})

JSON 字段内容查询

在 JSON 字符串中搜索特定键值对:

javascript 复制代码
db.collection.find({
  json: {
    $regex: /"account_number"\s*:\s*"25472145652320200722"/
  }
})

字段采样检查

查看前5个文档的指定字段:

javascript 复制代码
db.collection.find({}, { "结束时间": 1 }).limit(5)

注意:

  1. 使用 $dateFromString 时需确保字符串格式与 format 参数完全匹配
  2. 字符串比较和日期类型比较的查询性能差异显著,建议存储时使用原生日期类型
  3. 正则表达式查询对性能影响较大,适合小规模数据或后台任务

查看索引:

javascript 复制代码
db.collection.getIndexes()

删除索引:

javascript 复制代码
db.collection.dropIndex("name_1")
相关推荐
做运维的阿瑞6 分钟前
mysql数据库分组查询:GROUP BY 与 HAVING 的执行逻辑
数据库·sql·mysql
LaughingZhu32 分钟前
Product Hunt 每日热榜 | 2026-10-01
数据库·人工智能·深度学习·神经网络·搜索引擎
阳光九叶草LXGZXJ33 分钟前
达梦数据库-学习-67-SSL加密认证
linux·运维·数据库·sql·学习·ssl
ha_lydms37 分钟前
MaxCompute中JSON函数
大数据·数据库·阿里云·json·dataworks·maxcompute·odps
细嗅蔷薇@1 小时前
DML常见操作
数据库·mysql
lusklusklusk2 小时前
Oracle数据库基础之7_备份恢复基础之SCN
数据库·oracle
ao-weilai2 小时前
MySQL数据库:MySQL基础概要
数据库·mysql
雪碧聊技术2 小时前
从 0 跑通一个最小 RAG Demo:文档切分、向量检索与答案生成
数据库·oracle
喜欢的名字被抢了2 小时前
08-Redis 性能优化篇:快在哪、BigKey、HotKey、慢查询与内存
数据库·redis·性能优化
阳光九叶草LXGZXJ2 小时前
达梦数据库-学习-68-dmasm0X_XXXXXX.log日志激增
linux·运维·数据库·sql·学习