Mongodb:如何在查询中使用 or 运算符 ($or)


您可以在 MongoDB 中使用$or运算符来查找与多个条件中的任意一个匹配的文档。

该运算符使用以下基本语法:

 db.myCollection.find({
  “ $or ”: [
    {" field1 ": " hello "},
    {" field2 ": { $gte : 10 }}
  ]
})

此特定示例搜索名为myCollection 的集合中的所有文档,其中field1等于“hello”field2的值大于或等于 10。

以下示例展示了如何在收藏团队的实践中使用此语法,并提供以下文档:

 db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 8})
db.teams.insertOne({team: " Mavs ", points: 35, rebounds: 12})
db.teams.insertOne({team: " Spurs ", points: 20, rebounds: 7})
db.teams.insertOne({team: " Spurs ", points: 25, rebounds: 5})
db.teams.insertOne({team: " Spurs ", points: 23, rebounds: 9})

示例 1:对两个字段使用 OR 运算符

以下代码显示如何在team集合中查找“team”字段等于“Spurs”“points”字段的值大于或等于 31 的所有文档:

 db.teams.find({
  “ $or ”: [
    {" team ": " Spurs "},
    {" points ": { $gte : 31 }}
  ]
})

该查询返回以下文档:

 { _id: ObjectId("62018750fd435937399d6b6f"),
  team: 'Mavs',
  points: 35,
  rebounds: 12 }
{ _id: ObjectId("62018750fd435937399d6b70"),
  team: 'Spurs',
  points: 20,
  rebounds: 7 }
{ _id: ObjectId("62018750fd435937399d6b71"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }
{ _id: ObjectId("62018750fd435937399d6b72"),
  team: 'Spurs',
  points: 23,
  rebounds: 9 }

请注意,输出中的每个文档在球队字段中包含“Spurs” ,或者在积分字段中包含大于或等于 31 的值。

示例 2:对两个以上字段使用 OR 运算符

以下代码显示如何查找team集合中“team”字段等于“Mavs”“points”字段的值大于或等于 25“rebounds”字段的值的所有文档小于 8:

 db.teams.find({
  “ $or ”: [
    {" team ": " Mavs "},
    {" points ": { $gte : 25 }},
    {" rebounds ": { $lt : 8 }}
  ]
})

该查询返回以下文档:

 { _id: ObjectId("62018750fd435937399d6b6e"),
  team: 'Mavs',
  points: 30,
  rebounds: 8 }
{ _id: ObjectId("62018750fd435937399d6b6f"),
  team: 'Mavs',
  points: 35,
  rebounds: 12 }
{ _id: ObjectId("62018750fd435937399d6b70"),
  team: 'Spurs',
  points: 20,
  rebounds: 7 }
{ _id: ObjectId("62018750fd435937399d6b71"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }

请注意,这些文档中的每一个都满足三个标准中的一个或多个:

  • “球队”字段等于“小牛
  • “points”字段的值大于或等于25
  • “篮板”字段的值小于8

注意:您可以在此处找到$or函数的完整文档。

其他资源

以下教程解释了如何在 MongoDB 中执行其他常见操作:

MongoDB:如何在查询中使用 AND 运算符
MongoDB:如何检查字段是否包含字符串
MongoDB:如何使用“NO IN”查询
MongoDB:如何在特定字段中搜索“not null”

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注