MongoDB邏輯查詢操作符
阿新 • • 發佈:2019-02-05
邏輯查詢操作符
邏輯查詢操作符(Logical Query Operators),可連線多個查詢條件,用於邏輯與、或、非以及取反操作。
邏輯查詢操作符例項
邏輯查詢操作符(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=19或age=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
}
]