这一篇主要讲述MongoDB数据库的修改和删除操作,命令比较简单。

修改操作在实际应用中也是非常常用的。

·整体更新

命令:db.users.update({‘name’:’zslin.com’}, {‘name’:’zslin.com’, ‘age’:30});


 

此时已将name为zslin.com的数据对应的age修改为30了。

如果命令写成:db.users.update({‘name’:’zslin.com’}, {‘age’:30})


 

 

 

注:

1、users:集合名称

2、update:修改数据的函数,第一个参数为条件,第二个参数为修改值

 

问题:

在第二个参数中需要把所有字段都传入进来,如果一条数据有很多字段,又只修改其中的一个字段,这样的操作是比较麻烦的。

在mongoDB的更新操作中有整体更新和局部更新的说法,上面所描述的更新就属于整体更新。

·局部更新

在MongoDB中提供一两个修饰词用于局部更新:$inc 和 $set

1)$set:修改修饰词,用于修改指定字段值

命令:db.users.update({“name”:’zslin.com’}, {$set:{‘age’:35}});


 

注:

1、users:集合名称

2、update:修改的函数名

3、第一个参数为条件,第二个参数为值,但加了$set之后就只是将age这个属性的值修改为35了,其他所有字段不变

 

2)$inc:increase的缩写,意为增长

命令:db.users.update({‘name’:’zslin.com’}, {$inc:{‘age’:10}});


 

注:

1、users:集合名称

2、update:修改的函数名

3、第一个参数为条件,第二个参数为值,但用了$inc之后就将age的值修改为45了。$inc:{‘age’:10}意为将age这个属性值增长10,长用于计算网站点击量等功能。如果是需要减少,则把对应的数值换成负数即可:


 

 

·插入更新

有一些特殊的功能上会要求:先判断某数据是否存在,如果存在则修改,如果不存在则添加,在关系型数据库中一般是要执行两次数据库操作:1、查询;2、修改或添加。看一下在MongoDB中是如何实现的:

要修改name为zhangsan的age增加1(在我们的数据库中没有name为zhangsan的数据)

命令:db.users.update({‘name’:’zhangsan’}, {$inc:{‘age’:1}}, true)


 

注:

1、users:集合名称

2、update:修改的函数名

3、第一个参数为条件;第二个参数为修改值(将age增长1);第三个参数true(默认为false),意为如果没有找到数据则添加数据,所以再使用db.users.find()时多出了一条name为zhangsan,age为1的数据。

 

·增加字段

还是使用update来完成,可见update的功能非常强大啊!

命令:db.users.update({‘name’:’zslin.com’}, {$set:{‘city’:’yunnan’}})


 

为数据添加了一个名为city,值为yunnan的字段。同样也可以为另一条数据增加这个字段:


 

 

·批量修改

此时这两条数据的city值都是yunnan

命令:db.users.update({‘city’:’yunnan’}, {$inc:{‘age’:2}})

根据mysql的思想,这两条数据的age都应该增长2,但结果却只修改了第一条:


 

 

批量修改应该为第4个参数设置为true(默认为false)


 

注:

1、users:集合名称

2、update:修改的函数名

3、第一个参数为条件;第二个参数为修改值;第三个参数表示是在未找到数据时添加;第四个参数表示是否批量更新。

2、删

·批量删除

Db.users.remove():删除users集合中的所有数据

注:

1、users:集合名称

2、remove:删除操作的函数名

在remove中没有传递任何参数时表示删除对应集合中的所有数据,此操作非常危险(因为在实际应用中很少用到清空整个数据集合的),请谨慎操作!

 

·条件删除

db.users.remove({‘name’:’zhangsan’})


 

已将name为zhangsan的数据删除了

删除操作比较简单。