您的位置:首页 > 数据库 > Mongodb

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函数,再次不再赘述,有兴趣可以自行百度
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb