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