MongoDB(二) 增删改——我们所熟悉的操作

来源:互联网 发布:网 网络手游交易网√ 编辑:程序博客网 时间:2024/05/16 10:31

前面介绍了如何启动MongoDB以及用shell连接, 下面介绍一些我们在mysql中所熟悉的一些操作
1. 创建数据库

MongoDB 创建数据库的语法格式如下:```use DATABASE_NAME```如果数据库不存在,则创建数据库,否则切换到指定数据库。演示```shell> use zxmantouswitched to db zxmantou> dbzxmantou>```可见我们当前的db已经是zxmantou了, 使用**show dbs**命令查看数据库列表```shell> show dbsadmin  0.000GBlocal  0.000GBtest   0.000GB```发现新增的数据库并不在其中. 要显示它,我们需要向 zxmantou 数据库插入一些数据。```shell> db.user.insert({name:"zxmantou"})WriteResult({ "nInserted" : 1 })> show dbsadmin     0.000GBlocal     0.000GBtest      0.000GBzxmantou  0.000GB>```
  1. 删除数据库

    删除当前数据库,默认为 test, 下面实例中将删除我们新建的zxmantou库:

    > show dbsadmin     0.000GBlocal     0.000GBtest      0.000GBzxmantou  0.000GB> dbzxmantou> db.dropDatabase(){ "dropped" : "zxmantou", "ok" : 1 }> show dbsadmin  0.000GBlocal  0.000GBtest   0.000GB
  2. 删除集合(删除数据表)
    集合删除语法格式如下:

    db.COLLECTION_NAME.drop()

    实例:

    > use zxmantouswitched to db zxmantou> show tablesuser> db.user.drop()true> show tables>
  3. 插入文档(新增记录)
    MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:

    db.COLLECTION_NAME.insert(document)

    实例:

    > use zxmantouswitched to db zxmantou> db.user.insert({... name:"zxmantou",... age:"27",... gender: "male",... site: "www.zhangyuxiaojiao.com"... })WriteResult({ "nInserted" : 1 })> db.user.find(){ "_id" : ObjectId("58e4d75bbe3140034aeb2ba1"), "name" : "zxmantou", "age" : "27", "gender" : "male", "site" : "www.zhangyuxiaojiao.com" }>

    以上实例中 user 是我们的集合名(数据表名),如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档(一行记录)。

  4. 更新文档(更新记录)
    MongoDB 使用 update() 和 save() 方法来更新集合中的文档。接下来让我们详细来看下两个函数的应用及其区别。

    5.1 Update()方法:
    update() 方法用于更新已存在的文档。语法格式如下:

    ```db.COLLECTION_NAME.update(   <query>,   <update>,   {     upsert: <boolean>,     multi: <boolean>,     writeConcern: <document>   })```
        参数说明:  query : update的查询条件,类似sql update查询内where后面的。  update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的  upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。  multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。  writeConcern :可选,抛出异常的级别。

    我们刚才已经插入了一条记录, 现在对其进行修改:

    > db.user.find(){ "_id" : ObjectId("58e4d75bbe3140034aeb2ba1"), "name" : "zxmantou", "age" : "27", "gender" : "male", "site" : "www.zhangyuxiaojiao.com" }> db.user.update({'name':'zxmantou'},{$set:{'age':18}})WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.user.find().pretty(){        "_id" : ObjectId("58e4d75bbe3140034aeb2ba1"),        "name" : "zxmantou",        "age" : 18,        "gender" : "male",        "site" : "www.zhangyuxiaojiao.com"}>

    可见年龄已经年轻到18岁啦~

    5.2 save() 方法
    save() 方法通过传入的文档来替换已有文档。语法格式如下:

    db.collection.save(       <document>,       {         writeConcern: <document>       }    )
        参数说明:        document : 文档数据。        writeConcern :可选,抛出异常的级别。    

    实例

    以下实例中我们替换了 _id 为 58e4d75bbe3140034aeb2ba1 的文档数据:

    > db.user.save({... "_id" : ObjectId("58e4d75bbe3140034aeb2ba1"),...     "name" : "zhangyuxiaojiao",...     "gender" : "male",...     "age" : "27",...     "site" : "zxmantou.github.io"... })WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.user.find().pretty(){        "_id" : ObjectId("58e4d75bbe3140034aeb2ba1"),        "name" : "zhangyuxiaojiao",        "gender" : "male",        "age" : "27",        "site" : "zxmantou.github.io"}>
    更多实例
    • 只更新第一条记录:

      db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
    • 全部更新:

      db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
    • 只添加第一条:

      db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
    • 全部添加加进去:

      db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
    • 全部更新:

      db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
    • 只更新第一条记录:

      db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );
  5. 删除文档(删除记录)
    remove() 方法的基本语法格式如下所示:

    db.collection.remove(   <query>,   {     justOne: <boolean>,     writeConcern: <document>   })
            参数说明:    query :(可选)删除的文档的条件。    justOne : (可选)如果设为 true 或 1,则只删除一个文档。    writeConcern :(可选)抛出异常的级别。

    实例:

> db.user.find().pretty(){        "_id" : ObjectId("58e4d75bbe3140034aeb2ba1"),        "name" : "zhangyuxiaojiao",        "gender" : "male",        "age" : "27",        "site" : "zxmantou.github.io"}> db.user.remove({'name':'zhangyuxiaojiao'})WriteResult({ "nRemoved" : 1 })> db.user.find().pretty()>

如果你想删除所有数据,可以使用以下方式(类似常规 SQL 的 truncate 命令):

>db.col.remove({})
  1. 查询文档(查询记录)
    之前实例已经演示了通过find()方法来查询所有记录的方法, 下一篇内容中将详细介绍复杂的查询方法
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 新领的发票跟电脑对不上号怎么办 淘宝未发货退款卖家拒绝怎么办 在超市买东西把票丢了不让出怎么办 在淘宝上买东西付款不发货怎么办 买家拍下商品卖家拒绝发货怎么办 没有中文标签被投诉到工商局怎么办 淘宝申请退款卖家强制发货怎么办 1688卖家交易不小心关闭怎么办 拼多多两天不发货怎么办自动退款吗 在家里放的东西找不到了怎么办 在家里烧东西烟太大了怎么办 转转上买的二手东西有问题怎么办? 大巴车过虎门大桥错走小车道怎么办 pe高压膜中间松两边紧怎么办? 穿着浅口的高跟鞋走路老是掉怎么办 五吧同城模特兼职被骗了怎么办 华为手机充电玩黑屏怎么办教学视频 衣服肩膀被衣架撑变形了怎么办 货已经安到客户家客户不付款怎么办 微商卖家不给退货不给换货怎么办啊 淘宝卖家已签收退货却不退款怎么办 申请换货卖家收到货不给换怎么办 我买了个机器想退货怎么办 卖家要求退回去又拒收怎么办 拼多多48小时还不发货怎么办 退货退款单号填错了退不了款怎么办 淘宝退货退款快递单号填写错怎么办 蘑菇街退货忘记填快递单号了怎么办 您尝试购买的项目已停止供货怎么办 oppo新手机搬家搬了一半怎么办 开手机店手机卖不出去怎么办 京东买的东西误按签收了怎么办 小米5x充电宝充电自动断电怎么办 小米2s开不了机怎么办充电闪红灯 寄快递写错地址但已经发货了怎么办 拼多多发货时快递公司写错了怎么办 千牛发货信息写错了怎么办 发货物流单电话写错了怎么办 顺丰寄电脑保价后电脑进水了怎么办 微销通分享小程序没有二维码怎么办 京东的东西退掉但是赠品怎么办