mongodb增删改查 及批量操作(二)

时间:2022-11-14 11:00:44

1.增加insert

mongodb增删改查 及批量操作(二)

插入多笔数据

db.stu.insert([{_id:3,sn:'003',name:'zhangfei'},{_id:4,sn:'004',name:'guanyu'},{sn:'005',name:'liubei'}])

mongodb增删改查 及批量操作(二)

增加复杂的文档

db.stu.insert({name:{x:'li',m:'shiming'},jl:['war','kill']})

mongodb增删改查 及批量操作(二)

2.删delete

db.stu.remove({sn:'001'})     删除指定条件的数据
db.stu.remove({}) 删除所有数据
db.stu.remove('条件',true) 删除一行数据

3.改update

修改时的赋值表达式

$set       修改某列的值      
$unset 删除某个列
$rename 重命名某个列
$inc 增长某个列

将lisi 改为 dalang

db.user.update({name:'lisi'},{$set:{name:'dalang'}})   

mongodb增删改查 及批量操作(二)

mongodb增删改查 及批量操作(二)

测试修改某个列值,删除某个列,重命名某个列,增长某个列

db.user.update(
{name:'wukong'},
{
$set:name:′dzsf′,
$unset:{jingu:1},
$rename:sex:′gender′,
$inc:{age:16}
}
);

mongodb增删改查 及批量操作(二)

Option的作用

{upsert:true/false,multi:true/false}

upsert是指没有匹配的行,则直接插入该行

multi是指是否要改多行

db.user.update({age:10},{$set:{age:11}})   #此时只能改一行

mongodb增删改查 及批量操作(二)

db.user.update({age:10},{$set:{age:11}},{multi:true})   #此时可以修改多行

mongodb增删改查 及批量操作(二)

db.user.update({name:'wuyong'},{$set:{name:'junshiwuyong'}},{upsert:true})  #如果不存在就插入

mongodb增删改查 及批量操作(二)

setOnInsert 当upsert为true时,并且发生了insert操作时,可以补充的字段,setOnInsert只有在upsert设置为true,并且被更新的文档不存在此集合中,需要插入一个新的文档的时候才起作用。在插入的时候会为新插入的文档添加给定的字段.   

mongodb增删改查 及批量操作(二)

4.查select

查询条件:

$lt     <
$lte <=
$gt >
$gte >=
$ne <>
$or or
$in in
$nin not in
$not 元运算语句,可以用在其他任何条件之上
$mod 取模运算
(1).只查特定的列(id属性是默认查出来的,如果不需要则可以这样​​db.user.find({},{age:1,_id:0}))​
db.user.find({},{age:1})  

mongodb增删改查 及批量操作(二)

(2).查询条件为songzi 的 age列,并且结果中不包括_id列
db.user.find({name:'songzi'},{age:1,_id:0})  

mongodb增删改查 及批量操作(二)

(3).查询年龄>=11 <=23的数据
db.user.find({age:{$gte:11,$lte:23}})  

mongodb增删改查 及批量操作(二)

(4).查找2016年4月后创建的数据

向表中增加字段createtime

times=new Date('2016/09/20')
db.user.update({},{$set:{createtime:times}},{multi:true})

修改表createtime的值

db.user.update({name:'zhansan'},{$set:{createtime:new Date('2016/08/20')}})

现在查找满足条件的数据

db.user.find({createtime:{$gt:new Date('2016-04-01')}},{_id:0})

mongodb增删改查 及批量操作(二)

(5).查找不等于'dalang'的数据
db.user.find({name:{$ne:'dalang'}}) 
(6).查找'dalang','songzi'
db.user.find({name:{$in:['dalang','songzi']}})
(7).查找不是'dalang','songzi'
db.user.find({name:{$nin:['dalang','songzi']}})
(8).查找name是'dalang','songzi' 或者 age是11岁的 数据(or 和 in 混合使用)
db.user.find({$or:[{name:{$in:['dalang','zhansan']}},{age:11}]})
(9).not和mod的混合使用

查找取模为1的数据

db.goods.find({cat_id:{$mod:[3,1]}},{cat_id:1,_id:0})  

mongodb增删改查 及批量操作(二)

反之查找取模为0的

db.goods.find({cat_id:{$mod:[3,0]}},{cat_id:1,_id:0})

或者

db.goods.find({cat_id:{$not:{$mod:[3,1]}}},{cat_id:1,_id:0})  #目前是错误的  
(10).like的实现(mongodb用正则表达式实现)

查找name中有an数据

db.user.find({name:/an/})      # select * from user where name like '%an%'

查找name中以z开头的数据

db.user.find({name:/^z/})      # select * from user where name like 'z%'
(11).不区分大小写,搜索name中有chen的数据
db.user.find({name:/chen/i},{name:1,age:1,createtime:1,_id:0})  

mongodb增删改查 及批量操作(二)