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”