MongoDB 条件操作符
                           
天天向上
发布: 2025-03-07 22:36:36

原创
2 人浏览过

MongoDB 提供了一系列的条件操作符,用于筛选数据并执行不同的查询。主要的条件操作符如下:


1. 比较操作符

操作符作用
$eq等于(equal)
$ne不等于(not equal)
$gt大于(greater than)
$gte大于等于(greater than or equal)
$lt小于(less than)
$lte小于等于(less than or equal)

示例

查询 price 等于 100 的商品

db.products.find({ price: { $eq: 100 } })

查询 price 不等于 100 的商品

db.products.find({ price: { $ne: 100 } })

查询 price 大于 50 的商品

db.products.find({ price: { $gt: 50 } })

查询 price 小于等于 200 的商品

db.products.find({ price: { $lte: 200 } })

2. 逻辑操作符

操作符作用
$and逻辑 AND(多个条件都满足)
$or逻辑 OR(任意一个条件满足)
$not逻辑 NOT(取反)
$nor逻辑 NOR(所有条件都不满足)

示例

查询 price 大于 50 且 category 为 “electronics”

db.products.find({ 
  $and: [
    { price: { $gt: 50 } },
    { category: "electronics" }
  ] 
})

查询 price 小于 50 或 category 为 “books”

db.products.find({ 
  $or: [
    { price: { $lt: 50 } },
    { category: "books" }
  ] 
})

查询 price 不是 100

db.products.find({ price: { $not: { $eq: 100 } } })

查询 price 既不小于 50 也不大于 200

db.products.find({ 
  $nor: [
    { price: { $lt: 50 } },
    { price: { $gt: 200 } }
  ] 
})

3. 元素操作符

操作符作用
$exists字段是否存在
$type字段的数据类型

示例

查询 discount 字段存在的商品

db.products.find({ discount: { $exists: true } })

查询 price 字段类型是 double

db.products.find({ price: { $type: "double" } })

4. 数组操作符

操作符作用
$all数组字段必须包含指定所有值
$size数组字段的长度
$elemMatch数组字段中至少有一个元素满足多个条件

示例

查询 tags 数组包含 "electronics""sale"

db.products.find({ tags: { $all: ["electronics", "sale"] } })

查询 tags 数组长度为 3

db.products.find({ tags: { $size: 3 } })

查询 reviews 数组中至少有一个评分大于 4 并且 user 不是 "guest"

db.products.find({ 
  reviews: { 
    $elemMatch: { rating: { $gt: 4 }, user: { $ne: "guest" } }
  } 
})

5. 正则表达式操作符

操作符作用
$regex正则表达式匹配
$options配合 $regex 进行匹配修饰符,如 i(忽略大小写)

示例

查询 name 包含 "phone"

db.products.find({ name: { $regex: "phone" } })

查询 name"Samsung" 开头(不区分大小写)

db.products.find({ name: { $regex: "^Samsung", $options: "i" } })

6. 模式匹配操作符

操作符作用
$expr允许在查询中使用聚合表达式
$mod按模运算

示例

查询 price 是 5 的倍数

db.products.find({ price: { $mod: [5, 0] } })

查询 stock 大于 min_stock(基于字段值的计算)

db.inventory.find({
  $expr: { $gt: ["$stock", "$min_stock"] }
})

7. 比特操作符

操作符作用
$bitsAllSet所有指定位必须为 1
$bitsAnySet任何指定位为 1 即匹配
$bitsAllClear所有指定位必须为 0
$bitsAnyClear任何指定位为 0 即匹配

示例

查询 flags 字段的二进制表示中,第 1 和 3 位必须为 1:

db.users.find({ flags: { $bitsAllSet: [0, 2] } })

总结

MongoDB 条件操作符提供强大的查询功能,涵盖了比较、逻辑、数组、元素、正则、模式匹配、比特运算等多种情况。灵活使用这些操作符可以大幅提升查询能力和数据筛选效率!

你可以结合多个操作符进行复杂查询,例如:

db.products.find({ 
  $and: [
    { price: { $gt: 50, $lt: 500 } },
    { category: { $in: ["electronics", "home"] } }
  ]
})

这个查询表示:价格在 50 到 500 之间,并且 category"electronics""home" 的商品

更多详细内容请关注其他相关文章!

发表回复 0

Your email address will not be published. Required fields are marked *