MongoDB的文档增删改
2015-07-01 17:42
447 查看
一. 插入并保存文档
插入文档命令:数据库.集合名称.insert( 插入的文档名称 )查看集合数据:数据库.集合名称.find( )
注意:
不需要预先创建一个集合,在第一次插入数据时会自动创建;
每次插入一个集合时都会有一个ID,名为 _id;
插入文档大小超过命令 Object.bsonsize(doc) 的限制时,不能存到数据库中;
MongoDB在插入时不会执行代码,所以传统的注入式攻击对其无效;
MongoDB支持批量插入操作,而且速度更快,只发送一个TCP请求;
二. 删除文档
删除文档命令:数据库.集合名称.remove( 删除的文档名称 )注意:
如果不加文档名称,表示删除集合中的所有文档,但不会删除集合本身,索引也会保留,删除数据不能恢复;
可以使用命令:数据库.集合名称.drop( ) 删除整个集合,速度比remove快得多,但要重新建立集合,重新建立索引
三. 修改文档
① 使用update命令:数据库.集合名称.update( 新文档名称, 旧文档名称 )② 使用修改器修改:可以操作数组或者内嵌文档
1. " $set "修改器:
用来指定一个键的值,如果键不存在则自动创建它;甚至可以修改数据类型都没有问题,数组型:[ " 816 Park Street " , " 826 Park Street " ]
> db.personalinfo.update( { " id " : ObjectId( "4f661cd4618a714de9afce33" ) } , { " $set " : { " address " : " 816 Park Street " } } )
2. " $unset "将键完全删除,代码将上面的后部改为:" $unset " : { " address " : 1 } 即可
3. " $inc "修改器:
用来增加已有的键的值,不存在则自动创建,对于分析数据,网站访问量特别方便,当键的值存在时,再用inc会在原有的基础上增加
键的值,而不会替换;用法和set相似,就不再赘述了;
注意:$inc只能操作键的值为数字。其他的类型会报错;
4. 数组修改器:
" $push " :操作指定的键,存在则在数组后加一个元素,不存在则新建数组,写法仍然用update, $push不再需要双引号即可,不再赘述
" $ne ":判断值在不在数组中,如果不在则添加进去,不再赘述
" $addToSet ":和$ne的功能一样,但需要双引号,和$each的组合可以实现一次添加多个值:
> db.personalinfo.update( { " id " : ObjectId( "4f661cd4618a714de9afce33" ) } , { " $addToSet " :
{ " emails " : { " $each " : [" zhangsan@163.com", " zhangsan@yahoo.com " ] } } } )
" $pop ":可以从数组中的任何一段删除元素;{ " $pop " : { "emails" : 1 } } 从数组末尾删除一个元素,{ "$pop" : { " emails " : -1 } } 从开头删除一个
“ $pull ”:将所有匹配的元素都删除
5. 数组定位修改器:
数组下标以0开头,直接作为键来定位元素
> db.personalinfo.update( { " id " : ObjectId( "4f661cd4618a714de9afce33" ) } , { " $set " : { " address.0 " : " 816 Park Street " } } )
上式用address.0来定位第一个元素
> db.personalinfo.update( { " id " : ObjectId( "4f661cd4618a714de9afce33" ) } , { " $set " : { " address.$.street" : " 816 Park Street " } } )
上式用" $ "定位文档已经匹配的元素并更新
6. upsert更新:
在使用update时,不设置第三个参数为true,在查询不到要更新的文档时,不作任何操作,如果设置第三个参数为true,会在没有找到
文档的情况下新建一个文档。这种更新操作非常有用
7. save( )函数:
和insert操作功能类似,用法类似,不同的是,当插入的文档的键值相同,insert会报错,而save会进行更新操作
8. 修改多个文档:
update的第四个参数为true则修改多个匹配的文档的匹配键值,返回的参数updateExisting为true表示有更新,n表示更新了几个文档
9. 修改并返回修改后的文档:
findAndModify函数,再次不再赘述,有兴趣可以自行百度
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- PHP添加yaf xhprof mongodb 同理
- mongodb安装
- 如何在 Ubuntu 上安装 MongoDB
- perl操作MongoDB报错undefined symbol: HeUTF8解决方法
- C#中使用1.7版本驱动操作MongoDB简单例子
- MongoDB系列教程(四):设置用户访问权限
- php实现的mongodb操作类实例
- 解决mongodb在ubuntu下启动失败,提示couldn‘t remove fs lock errno:9 Bad file descriptor的错误
- 在PostgreSQL的基础上创建一个MongoDB的副本的教程
- java操作mongodb示例分享
- php对mongodb的扩展(初出茅庐)
- 作为PHP程序员应该了解MongoDB的五件事
- 基于MySQL到MongoDB简易对照表的详解
- MongoDB入门教程之C#驱动操作实例
- MongoDB为用户设置访问权限
- MongoDB db.serverStatus()输出内容中文注释
- mongodb与mysql命令详细对比
- Ubuntu中安装MongoDB及执行一些简单操作笔记
- MongoDB 语法使用小结