MongoDB $or 运算符

2024 年 9 月 6 日 | 阅读 4 分钟

MongoDB 提供了各种逻辑查询运算符。$or 运算符是其中一个运算符。$or 运算符对一个或多个表达式的数组执行逻辑“或”运算。此运算符仅用于检索至少匹配数组中给定表达式之一的文档。

$OR 运算符用于在单个查询中查找多个表达式,该查询只需要文档中一个匹配条件。多个键和值可以与 $or 运算符一起使用。

  1. 用户可以根据自己的需求在 find()、update() 等方法中使用此运算符。
  2. 您也可以将此运算符与 GeoSpatial 查询、排序操作和文本查询一起使用。

语法

示例

在下面的示例中,我们将使用

示例 1:MongoDB 逻辑 $or 运算符

在此示例中,我们仅检索其 Course 为“MCA”或 batch_year 为 2018 的学生的数据。

输出

>db.sutdent.find({$or: [{Course : "MCA"}, {batch_year : 2018}]}).pretty()
{
           "_id" : ObjectId("56254d4fdf2222265r4g12ds3d65f"),
           "name" : "Mick",
           "Coruse" : "btech",
           "batch_year" : 2018,
           "language" : ["c++", "java", "python"],
           "personal_details" : 
                     {
                      "Father_name" : "Jonny",
                      "phone_no" : 8895321456,
                      "age" : 23,
                      "gender" : "Male",
                      "City" : "NewYork",
                     }            
}
{
           "_id" : ObjectId("56254d4fdf2222265r4g12ds3d655"),
           "name" : "Jonny",
           "Coruse" : "MCA",
           "batch_year" : 2019,
           "language" : ["C#", "java", "PHP"],
           "personal_details" : 
                     {
                      "Father_name" : "Thomas",
                      "phone_no" : 7845123698,
                      "age" : 24,
                      "gender" : "Male",
                      "City" : "London",
                     }          
}

示例 2:MongoDB 逻辑 $or 运算符(检索嵌入文档中的数据)

在此示例中,我们仅检索城市为“伦敦”或年龄为 20 的学生文档。

输出

>db.student.find({$or: [{"personal.age": 20}, {"personal.City": "London"}]}).pretty()
{
           "_id" : ObjectId("56254d4fdf2222265r4g12ds3d691"),
           "name" : "Zoya",
           "Course" : "BCA",
           "batch_year" : 2020,
           "language" : ["C#", "JavaScript"],
           "personal_details" : 
                     {
                      "Father_name" : "Henry",
                      "phone_no" : 9874563698,
                      "age" : 20,
                      "gender" : "Female",
                      "City" : "London",
                     }
}
{
           "_id" : ObjectId("56254d4fdf2222265r4g12ds3d655"),
           "name" : "Jonny",
           "Course" : "MCA",
           "batch_year" : 2019,
           "language" : ["C#", "java", "PHP"],
           "personal_details" : 
                     {
                      "Father_name" : "Thomas",
                      "phone_no" : 7845123698,
                      "age" : 24,
                      "gender" : "Male",
                      "City" : "London",
                     }          
}

示例 3:使用 $or 运算符匹配数组中的值

在此示例中,我们仅检索至少匹配给定数组中一个值的学生文档。

输出

>db.student.find({$or: [{language: {$in: ["c++", "java", "HTML"]}}]}).pretty()
{
           "_id" : ObjectId("56254d4fdf2222265r4g12ds3d65f"),
           "name" : "Mick",
           "Course" : "btech",
           "batch_year" : 2018,
           "language" : ["c++", "java", "python"],
           "personal_details" : 
                     {
                      "Father_name" : "Jonny",
                      "phone_no" : 8895321456,
                      "age" : 23,
                      "gender" : "Male",
                      "City" : "NewYork",
                     }            
}
{
           "_id" : ObjectId("56254d4fdf2222265r4g12ds3d655"),
           "name" : "Jonny",
           "Course" : "MCA",
           "batch_year" : 2019,
           "language" : ["C#", "java", "PHP"],
           "personal_details" : 
                     {
                      "Father_name" : "Thomas",
                      "phone_no" : 7845123698,
                      "age" : 24,
                      "gender" : "Male",
                      "City" : "London",
                     }          
}
{
           "_id" : ObjectId("56254d4fdf2222265r4g12ds3d665"),
           "name" : "Mia",
           "Course" : "btech",
           "batch_year" : 2020,
           "language" : ["HTML", "CSS", "PHP"],
           "personal_details" : 
                     {
                      "Father_name" : "Leo",
                      "phone_no" : 6312547896,
                      "age" : 22,
                      "gender" : "Female",
                      "City" : "Manchester",
                     }           
}

下一个主题MongoDB $in 运算符