MongoDB逻辑查询操作符

逻辑查询操作符
逻辑查询操作符(Logical Query Operators),可连接多个查询条件,用于 逻辑与、或、非以及取反操作。
逻辑操作符 作用 参数
$and {$and:[{<expressionl>},{<expression2>},…,{<expressionN>}]}
$or {$or:[{<expressionl>},{<expression2>},…,{<expressionN>}]}
$nor {$nor:[{<expressionl>},{<expression2>},…,{<expressionN>}]}
$not 取反 {field:{$not:{<operator-expression>}}}

逻辑查询操作符实例
 
   
var db = connect("localhost:27017/test");
db.col.drop();
var bulk = db.col.initializeUnorderedBulkOp();
// 测试数据
var doc1 = {name : "joe", age : 20}
bulk.insert(doc1);
var doc2 = {name : "joe", age : 31}
bulk.insert(doc2);
var doc3 = {name : "jack", age : 21}
bulk.insert(doc3);
var doc4 = {name : "John", age : null}
bulk.insert(doc4);
//执行插入操作
bulk.execute();
print("========find - $and 逻辑操作符的使用=======")
/*
$and && 且逻辑操作符 选择满足所有表达式的文档
{ $and: [ { <expression1> }, { <expression2> } , ... , { <expressionN> } ] }
注意:1. and 操作符使用的是”短路运算“,即如果第一个表达式返回 false的话,不会再计算后面的表达式
2. and 操作符有隐式和显式两种 隐式的可以使用 逗号 连接多个表达式
3. 一般情况下隐式和显式两种方式是等价的,但有的时候只能显式使用$and
*/
var cursor = db.col.find(
{
//$and: [ { age:{$gt:21}}, { age:{ $lte:31} } ] //age>21 && age<=31
//age:{$gte:20,$lte:31}
$and: [
{ $or:[ { age:19 },{ age:21 } ] }, //age=19age=21
{ $or:[ { name:"joe" },{ name:"jack" } ] }
]
}
);
printjson(cursor.toArray());
 
 
 
 
print("========find - $nor 逻辑操作符的使用=======")
/*
$nor 用于查询集合中不满足参数数组中列出的所有条件的文档
{ $nor: [ { <expression1> }, { <expression2> }, ... { <expressionN> } ] }
*/
var cursor = db.col.find(
{
$nor:[
{ name:"joe" },
{ name:"jack" }
]
});
printjson(cursor.toArray());
 
 
print("========find - $not 操作符的使用=======")
/*
$not 对表达式取反
{ field: { $not: { <operator-expression> } } }
*/
var cursor = db.col.find(
{
age:{ $not: { $gt:22,$lte:30 } } //age<=22 age>30 或 null
});
printjson(cursor.toArray());
运行结果
 
   
C:\>mongo --quiet find_logic.js
========find $and 逻辑操作符的使用=======
[
{
"_id" : ObjectId("56e569373f52f0472ccbcfd1"),
"name" : "jack",
"age" : 21
}
]
========find $nor 逻辑操作符的使用=======
[
{
"_id" : ObjectId("56e569373f52f0472ccbcfd2"),
"name" : "John",
"age" : null
}
]
========find $not/$gt/$lte 操作符的使用=======
[
{
"_id" : ObjectId("56e569373f52f0472ccbcfcf"),
"name" : "joe",
"age" : 20
},
{
"_id" : ObjectId("56e569373f52f0472ccbcfd0"),
"name" : "joe",
"age" : 31
},
{
"_id" : ObjectId("56e569373f52f0472ccbcfd1"),
"name" : "jack",
"age" : 21
},
{
"_id" : ObjectId("56e569373f52f0472ccbcfd2"),
"name" : "John",
"age" : null
}
]

猜你喜欢

转载自blog.csdn.net/u022812849/article/details/51314453