比较操作符 | 对应 | 参数 |
$eq和$ne | =和!= | { |
$gt和$gte | >和>= | { |
$lt和$lte | 和= | { |
$in和$nin | 包含 和 不包含 | { |
例子:
/*find age >22*/ db.user.find({"age":{$gt:22}})
逻辑查询操作符:
逻辑操作符 | 对应 | 参数 | |
$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数据类型编号的文档 |
正则匹配
/* find name 开头为j的*/ db.user.find({"name":/^j/})
$where查询
可以结合javascript进行查询,当javascript返回true时,才返回当前文档
db.user.find({$where:function(){return this.name=='jack'}})
查询时,$where操作符不能使用索引,每个文档需要从BSON对象转换成javascript对象后,才可以通过$where表达式运行,因此比常规查询要慢,一般要避免使用$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参数
若update最后参数加true则修改条件不存在时,自动增加一条如:
db.user.update({"name":"Mark"},{$set:{"age":10}},true)
会自动增加一条记录:name为mark,age为10
如果加了true,而且条件又满足则会批量修改,不然就默认只更新第一条
Remove操作:
db.person.remove({"name":"jack"})
希望本文所述对大家MongoDB数据库程序设计有所帮助。