本文实例讲述了MongoDB增删查改操作。分享给大家供大家参考,具体如下:
MongoDB自带了一个JavaScript Shell,所以在其中使用js语法是可以的。
Insert操作:
单条插入
1
2
|
var single={ "name" : "mei" , "age" :22} db. user . insert (single); |
循环插入
1
2
|
var single={ "name" : "tinyphp" , "num" :28,} for (var i=0;i<5;i++){single.num=i;db. user . insert (single);} |
Find查询操作:
1
|
db.集合名.find(query,fields,limit,skip) |
query,指明查询条件,相当于SQL中的where语句
例子:
1
|
db.student.find({ "name" : "joe" , "age" :{$lt:22}}) |
fields用于字段映射,语法格式:{field:0}或{field:1}
例子:
1
|
db.student.find({ "age" :{$lt:22},{ "_id" :0, "name" :1}}) |
表示查询结果包含name字段,不包含_id字段
limit限制查询结果集的文档数量,指定查询返回结果数量的上限
例子:
1
|
db.student.find({ "name" : "joe" },{ "name" :1, "age" :1},5) |
skip跳过一定数量的结果,设置第一条返回文档的偏移量
例子:
1
|
db.student.find({ "name" : "joe" },{ "name" :1, "age" :1},5,20) |
表示跳过前20条文档
排序:-1降序,1升序
1
|
db. user .findOne() |
注意事项:MongoDB不支持多集合间的连接查询,find函数一次查询只针对一个集合
比较查询操作符:
比较操作符 | 对应 | 参数 |
$eq和$ne | =和!= |
{ |
$gt和$gte | >和>= |
{ |
$lt和$lte | <和<= |
{ |
$in和$nin | 包含 和 不包含 |
{ |
例子:
1
2
|
/*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数据类型编号的文档 |
正则匹配
1
2
|
/* find name 开头为j的*/ db. user .find({ "name" :/^j/}) |
$where查询
可以结合javascript进行查询,当javascript返回true时,才返回当前文档
1
|
db. user .find({$ where : function (){ return this. name == 'jack' }}) |
查询时,$where操作符不能使用索引,每个文档需要从BSON对象转换成javascript对象后,才可以通过$where表达式运行,因此比常规查询要慢,一般要避免使用$where查询。
还可以存起来用:
1
2
3
4
|
var list=db. user .find(); list.forEach( function (x){ print(x. name ); }) |
Update操作:
整体更新
1
2
3
|
var model=db. user .findOne({ "name" : "jack" }) model.age=44 db. user . update ({ "name" : "jack" },model) |
局部更新
$inc修改器
1
2
|
/* update bing age+30 */ db. user . update ({ "name" : "bing" },{$inc:{ "age" :30}}) |
$set修改器
1
2
|
/* update bing age=10 */ db. user . update ({ "name" : "bing" },{$ set :{ "age" :10}}) |
update的true参数
若update最后参数加true则修改条件不存在时,自动增加一条如:
1
|
db. user . update ({ "name" : "Mark" },{$ set :{ "age" :10}}, true ) |
会自动增加一条记录:name为mark,age为10
如果加了true,而且条件又满足则会批量修改,不然就默认只更新第一条
Remove操作:
1
|
db.person.remove({ "name" : "jack" }) |
希望本文所述对大家MongoDB数据库程序设计有所帮助。
原文链接:https://www.cnblogs.com/tinyphp/p/5654621.html