Skip to content

MongoDB 增删改查

插入

js
db.users.insertOne({
  name: 'Tom',
  email: 'tom@example.com',
  age: 18,
  createdAt: new Date(),
})
js
db.users.insertMany([
  { name: 'Alice', email: 'alice@example.com', age: 20 },
  { name: 'Bob', email: 'bob@example.com', age: 22 },
])

更新

js
db.users.updateOne(
  { email: 'tom@example.com' },
  {
    $set: { age: 19 },
    $currentDate: { updatedAt: true },
  },
)
js
db.users.updateMany({ status: 'pending' }, { $set: { status: 'active' } })

常用更新操作符:

  • $set:设置字段。
  • $unset:删除字段。
  • $inc:数字递增。
  • $push:数组追加。
  • $pull:数组移除匹配项。

删除

js
db.users.deleteOne({ email: 'tom@example.com' })
db.users.deleteMany({ status: 'inactive' })

删除前先用同样条件 find() 确认范围。

查询

js
db.users.find()
db.users.findOne({ email: 'tom@example.com' })

指定字段:

js
db.users.find({ age: { $gte: 18 } }, { name: 1, email: 1, _id: 0 })

排序和分页:

js
db.users
  .find({ age: { $gte: 18 } })
  .sort({ createdAt: -1 })
  .skip(0)
  .limit(20)

聚合

js
db.orders.aggregate([
  { $match: { status: 'paid' } },
  { $group: { _id: '$userId', totalAmount: { $sum: '$amount' } } },
  { $sort: { totalAmount: -1 } },
  { $limit: 10 },
])

常用阶段:

  • $match:过滤。
  • $project:选择或计算字段。
  • $group:分组聚合。
  • $sort:排序。
  • $skip / $limit:分页。
  • $lookup:关联集合。

基于 MIT 许可发布