mongodb 逻辑操作符整理
or 、 in
$or是一个逻辑or操作符操作在一个数据或者多个表达式并且需要选择至少一个满足条件的表达式,$or有表达式为:
{ $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }
注意事项:
1、$or中的所有表达式必须支持索引,否则的话MongoDB就会扫描整个集合
2、当使用$or查询并且使用索引时,每个$or的条件表达式都可以使用自己的索引,下面的例子中,可以为quantity和price分别单独建立索引,而不需要创建一个复合索引
3、使用$or操作比较字段的值是否等于某个值时可以使用$in替换$or操作;例如查询集合inventory中字段quantity的值等于20或者50的所有文档,使用$in操作:
db.inventory.find ( { quantity: { $in: [20, 50] } } )
举例:
查询集合inventory中所有字段quantity小于20或者price等于10的所有文档
db.inventory.find( { $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] } )
(。。或者。。)查询name为xiaomu或者价格包含3的数据
db.collection1.find({$or:[{name:"xiaomu"},{price:{$in:[3]}}]})
(包含。。或者包含。。)查询price中含有1或者2的数据
db.collection1.find({price:{$in:[1,2]}})