| 比較操作符 | 對應(yīng) | 參數(shù) |
| $eq和$ne | =和!= | { |
| $gt和$gte | >和>= | { |
| $lt和$lte | 和= | { |
| $in和$nin | 包含 和 不包含 | { |
例子:
/*find age >22*/
db.user.find({"age":{$gt:22}})
邏輯查詢操作符:
| 邏輯操作符 | 對應(yīng) | 參數(shù) | |
| $and | 與 | {$and:[{條件1},..,{條件N}]} | db.user.find({$and:[{"name":"tinyphp","num":3}]}) 等同 db.user.find({"name":"tinyphp","num":3}) |
| $or | 或 | {$or:[{條件1},..,{條件N}]} | |
| $nor | 非 | {$nor:[{條件1},..,{條件N}]} | |
| $not | 取反 | {field:{$not:{條件}}} |
元素操作符:
| 元素操作符 | 作用 | 如 | |
| $exists | 按照字段是否存在來查詢文檔 | {field:{$exists:布爾值}} | db.user.find({"age":{$exists:true}}) 查詢存在age字段的文檔 |
| $type | 選擇字段值為指定BSON數(shù)據(jù)類型編號的文檔 |
正則匹配
/* find name 開頭為j的*/
db.user.find({"name":/^j/})
$where查詢
可以結(jié)合javascript進行查詢,當javascript返回true時,才返回當前文檔
db.user.find({$where:function(){return this.name=='jack'}})
查詢時,$where操作符不能使用索引,每個文檔需要從BSON對象轉(zhuǎn)換成javascript對象后,才可以通過$where表達式運行,因此比常規(guī)查詢要慢,一般要避免使用$where查詢。
還可以存起來用:
var list=db.user.find();
list.forEach(function(x){
print(x.name);
})
Update操作:
整體更新
var model=db.user.findOne({"name":"jack"})
model.age=44
db.user.update({"name":"jack"},model)
局部更新
$inc修改器
/*update bing age+30 */
db.user.update({"name":"bing"},{$inc:{"age":30}})
$set修改器
/*update bing age=10 */
db.user.update({"name":"bing"},{$set:{"age":10}})
update的true參數(shù)
若update最后參數(shù)加true則修改條件不存在時,自動增加一條如:
db.user.update({"name":"Mark"},{$set:{"age":10}},true)
會自動增加一條記錄:name為mark,age為10
如果加了true,而且條件又滿足則會批量修改,不然就默認只更新第一條
Remove操作:
db.person.remove({"name":"jack"})
希望本文所述對大家MongoDB數(shù)據(jù)庫程序設(shè)計有所幫助。