mongodb操作
2016-07-22 13:34
381 查看
update
一般有两种方法:替换操作如db.users.update({name:"xx"},newData,upsert,update),还有就是原子操作,即只更新部分数据,这里介绍原子操作;
其中的
upsert为布尔值,表示是否在没有找到对象时直接创建一个新的对象;
udpate为布尔值,false时只会更新第一个满足条件的对象,true会更新所有对象;
修改器
$set用于增加新键或当键不存在时创建一个;如当数据库中有
{"name":"heli", "keys":{"a1":12,"a2":23}}想要更新keys中的a1, 代码:
db.users.update({name:"heli"},{"$set":{"keys.a1":"haha"}})。
$inc
用于为Number类型的键增加值,不能对String类型对象处理;当键不存在时,会创建一个新键,并设置为inc的值;
数组操作:$push $pop $pull
* 不存在则创建:
{"$push":{comments":{name:"heli",docs:"xxxx"}}}会往匹配的数据里的comments键对应的数组push增加一个数据,如果comments不存在,则会创建一个数组对象。
* 值已经存在数组里则不添加
$ne:
update({"authors":{"$ne":"heli"}},{$push:{"autors":"heli"}})
表示如果“authors”数组中没有“heli”值则push进去;
*
$addToSet完成了域
$ne同样的工作,但
$addToSet与
$each结合可以实现一次添加多个对象,且保证数组中没有重复的值;如:
db.users.update({"name":"xxx"},{$addToSet:{"emails":{$each:["a@gmail.com","b@gmail.com"]}}};
$pop根据数组位置来删除对象:
{$pop:{key:-1}} // -1为数组尾,1为数组头;
$pop根据数组元素的特殊键来删除:
如数组comments成员为{name, doc}两个属性,则可以通过name属性来删除所有满足条件的元素:
db.user.update({name:heli},{$pull:{comments:{name:"小明"}}})
数组定位
对于数组中的指定索引位置或满足一定条件的对象的修改方法,可以通过定位的方式来处理,假使数据库中已经有如下数据:
{ "_id":123, "comments":[ {"name":"小明", age:20}, {name:"小花", age: 18} ] }
对于指定索引的修改方式:
db.users.update({_id:123},{$inc:{"comments.0.age",5}})该段代码是将小明的age增加5;
不知道索引时:
通过条件查找,用
$来代表找到的对象,
db.user.update({"comments.name":"小花"},{$set:{"comments.$.name":"小红"}}),该代码将数组中的小花名字改成小红;
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- 如何在 Fedora 上安装 MongoDB 服务器
- PHP添加yaf xhprof mongodb 同理
- mongodb安装
- 如何在 Ubuntu 上安装 MongoDB
- 信息安全聚合 Sec-News 的重构之路
- Ruby on Rails框架程序连接MongoDB的教程
- perl操作MongoDB报错undefined symbol: HeUTF8解决方法
- C#中使用1.7版本驱动操作MongoDB简单例子
- 使用zabbix监控mongodb的方法
- Node.js的MongoDB驱动Mongoose基本使用教程
- MongoDB系列教程(四):设置用户访问权限
- ASP.NET MVC4使用MongoDB制作相册管理
- node.js连接mongoDB数据库 快速搭建自己的web服务
- php实现的mongodb操作类实例
- 解决mongodb在ubuntu下启动失败,提示couldn‘t remove fs lock errno:9 Bad file descriptor的错误
- 在PostgreSQL的基础上创建一个MongoDB的副本的教程
- 关于mongoose连接mongodb重复访问报错的解决办法
- java操作mongodb示例分享
- php对mongodb的扩展(初出茅庐)