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

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

MongoDB 创建数据库的语法格式如下:

```
use DATABASE_NAME
```

如果数据库不存在,则创建数据库,否则切换到指定数据库。
演示

```shell
> use zxmantou
switched to db zxmantou
> db
zxmantou
>
```
可见我们当前的db已经是zxmantou了, 使用**show dbs**命令查看数据库列表

```shell
> show dbs
admin  0.000GB
local  0.000GB
test   0.000GB
```
发现新增的数据库并不在其中. 要显示它,我们需要向 zxmantou 数据库插入一些数据。

```shell
> db.user.insert({name:"zxmantou"})
WriteResult({ "nInserted" : 1 })
> show dbs
admin     0.000GB
local     0.000GB
test      0.000GB
zxmantou  0.000GB
>
```
  1. 删除数据库

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

    > show dbs
    admin     0.000GB
    local     0.000GB
    test      0.000GB
    zxmantou  0.000GB
    > db
    zxmantou
    > db.dropDatabase()
    { "dropped" : "zxmantou", "ok" : 1 }
    > show dbs
    admin  0.000GB
    local  0.000GB
    test   0.000GB
  2. 删除集合(删除数据表)
    集合删除语法格式如下:

    db.COLLECTION_NAME.drop()

    实例:

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

    db.COLLECTION_NAME.insert(document)

    实例:

    > use zxmantou
    switched 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.zhan
    gyuxiaojiao.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.zhan
    gyuxiaojiao.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()方法来查询所有记录的方法, 下一篇内容中将详细介绍复杂的查询方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值