MongoDB中如何使用条件查询?

在MongoDB中使用条件查询主要有以下几种方式:

  1. 在find()操作中使用条件过滤器进行条件查询。
  • 比如筛选age大于30的文档:
db.users.find({ age: { $gt: 30 } })
  • 支持的条件操作符有:$gt/$gte/$lt/$lte/$ne/$in/$nin等。
  1. 使用$or和$and实现逻辑条件查询。
  • 比如age大于30或小于20:
db.users.find({ $or: [ { age: { $gt: 30 } }, { age: { $lt: 20 } } ] }) 
  • 比如age在20到30之间:
db.users.find({ $and: [ { age: { $gte: 20 } }, { age: { $lte: 30 } } ] })
  1. 使用$expr操作符实现复杂的条件表达式。
  • 比如查询price大于平均price的商品:
db.products.find({ 
  $expr: { 
    $gt: [ "$price", { $avg: "$price" } ] 
  } 
})
  1. 在查询中使用正则表达式进行条件过滤。
  • 比如名字包含”Er”的用户:
db.users.find({ name: /Er/ }) 
  1. 在索引字段上使用范围查询实现高效查询。
  • 比如ID在10到20之间的商品:
db.products.find({ id: { $gte: 10, $lte: 20 } })
  1. 使用$where操作符执行JavaScript函数进行条件过滤。
  • 这提供了最大的灵活性,可以实现各种复杂的过滤逻辑。
db.users.find({
  $where: function() { 
    return this.name === this.nickname && this.age > 30
  } 
})
  1. 使用聚合管道的$match实现条件过滤。
  • 这可以和其他聚合操作符联合使用进行数据过滤与分析。