MongoDB $or 运算符介绍

$or 运算符是 MongoDB 中用于执行多个条件的逻辑或(OR)操作的一个运算符。它可以将多个查询条件组合起来,形成一个逻辑或(OR)关系,查询符合其中任意一个条件的文档。

语法

$or 运算符的语法如下所示:

{ $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }

其中,<expression> 是一个查询条件,可以是任何合法的查询表达式。

使用场景

$or 运算符主要用于查询需要满足多个查询条件中的任意一个的文档。比如,我们可能需要查询所有年龄大于 30 岁或者收入大于 5000 的员工信息,这时就可以使用 $or 运算符将这两个查询条件组合起来。

示例

示例 1:查询年龄大于 30 岁或者收入大于 5000 的员工信息

假设我们有一个集合 employees,其中包含了许多员工的信息,包括姓名、年龄、收入等。现在我们需要查询所有年龄大于 30 岁或者收入大于 5000 的员工信息,可以使用 $or 运算符进行查询:

db.employees.find({ $or: [{ age: { $gt: 30 } }, { income: { $gt: 5000 } }] })

查询结果如下所示:

{ "_id" : ObjectId("602db3a3df587c2737c9a08d"), "name" : "Alice", "age" : 32, "income" : 6000 }
{ "_id" : ObjectId("602db3a3df587c2737c9a08e"), "name" : "Lucy", "age" : 28, "income" : 5500 }
{ "_id" : ObjectId("602db3a3df587c2737c9a08f"), "name" : "James", "age" : 29, "income" : 4000 }
{ "_id" : ObjectId("602db3a3df587c2737c9a090"), "name" : "Kobe", "age" : 35, "income" : 4500 }

示例 2:查询城市为 Beijing 或 Shanghai 的订单信息

假设我们有一个集合 orders,其中包含了许多订单的信息,包括订单编号、下单时间、订单状态、订单金额和收货地址等。现在我们需要查询所有城市为 Beijing 或 Shanghai 的订单信息,可以使用 $or 运算符进行查询:

db.orders.find({
  $or: [
    { "shipping_address.city": "Beijing" },
    { "shipping_address.city": "Shanghai" }
  ]
})

上面的查询语句会返回所有收货地址所在城市为 Beijing 或 Shanghai 的订单信息。

假设 orders 集合中的一个订单文档如下所示:

{
  "_id": ObjectId("601234567890abcdef123456"),
  "order_number": "202201010001",
  "order_date": ISODate("2022-01-01T00:00:00Z"),
  "status": "Complemted",
  "total_amount": 1500,
  "shipping_address": {
    "province": "Beijing",
    "city": "Beijing"
  }
}

那么执行上面的查询语句,就可以返回该订单文档。

结论

$or 运算符可以将多个查询条件组合起来,形成一个逻辑或(OR)关系,可以用于查询满足任意一个查询条件的文档。在实际的应用场景中, $or 运算符非常常用,可以帮助我们轻松地实现多条件查询的功能。