mongoDB CRUD特性介绍

mongoDB以类JSON的方式,即BSON来组织和封装数据,实现了非机构化数据的存储。那对于其数据的查询,增删改,则由所谓的CRUD方法来实现,相当于关系型数据库的DQL,DML。CRUD特性基本上与SQL数据库的操作命令有很多相似的地方,也有一些差异。本文简要描述CRUD,便于快速认识及理解mongoDB的日常操作。

预备热身
Linux下快速安装MongoDB
Windows平台下安装MongoDB
mongoDB 启动与停止
mongo shell连接到mongoDB及shell提示符下执行js脚本
mongoDB简介及关键特性
SQL与mongoDB对比及映射

一、创建数据库

    //演示环境
    # cat /etc/redhat-release 
    CentOS release 6.7 (Final)

    # mongo --version
    MongoDB shell version: 3.0.12

    创建语法
            use database_name

    # mongo
    MongoDB shell version: 3.0.12
    connecting to: test
    > use tempdb         //如果数据库不存在,则创建数据库,否则切换到指定数据库
    switched to db tempdb

    > show dbs          //由于没有插入任何文档,因此无法查看到刚刚创建的数据库
    local  0.031GB

二、创建文档

  db.collection_name.insert(document)   //创建语法

    > db.users.insert({         //该命令将添加一个文件,同时创建集合users
    ... author:"Leshami",
    ... age:26,
    ... groups:["dba","operator"],
    ... blog:"http://blog.csdn.net/leshami"
    ... })
    WriteResult({ "nInserted" : 1 })

    > show dbs;                //再次查看数据库,可以看到tempdb已产生
    local   0.031GB
    tempdb  0.031GB

    > db.users.insert({      //再次新增一个文档
    ... author:"David",
    ... age:28,
    ... groups:["system","dev"],
    ... blog:"http://blog.csdn.net/david"
    ... })
    WriteResult({ "nInserted" : 1 })

三、查询文档

    db.collection_name.find()            //查看语法
    db.collection_name.find().pretty()   //查看语法,便于阅读的简易方式
    db.collection.find( <query filter>, <projection> )   //query filter为过滤条件,projection表示显示哪些列

    > db.users.find()    //如查看users集合,由于输出结果太长,此处查询结果省略
    > db.users.find({},{_id:0})  //使用_id:0方式过滤自动生产的_id列
    { "author" : "Leshami", "age" : 26, "groups" : [ "dba", "operator" ], "blog" : "http://blog.csdn.net/leshami" }
    { "author" : "David", "age" : 28, "groups" : [ "system", "dev" ], "blog" : "http://blog.csdn.net/david" }

    //使用pretty方式查看结果集
    > db.users.find().pretty()     
    {
            "_id" : ObjectId("57ecb2d9c3f3ec8e414b944c"),
            "author" : "Leshami",
            "age" : 26,
            "groups" : [
                    "dba",
                    "operator"
            ],
            "blog" : "http://blog.csdn.net/leshami"
    }
    {
            "_id" : ObjectId("57ecb3f9c3f3ec8e414b944d"),
            "author" : "David",
            "age" : 28,
            "groups" : [
                    "system",
                    "dev"
            ],
            "blog" : "http://blog.csdn.net/david"
    }

    //也可以使用输出到变量的方式,然后再printjson来输出结果集
    > var list=db.users.find().toArray(); 
    > printjson(list)
    [
            {
                    "_id" : ObjectId("57ecb2d9c3f3ec8e414b944c"),
                    "author" : "Leshami",
                    "age" : 26,
                    "groups" : [
                            "dba",
                            "operator"
                    ],
                    "blog" : "http://blog.csdn.net/leshami"
            },
            {
                    "_id" : ObjectId("57ecb3f9c3f3ec8e414b944d"),
                    "author" : "David",
                    "age" : 28,
                    "groups" : [
                            "system",
                            "dev"
                    ],
                    "blog" : "http://blog.csdn.net/david"
            }
    ]

    tempdb> db.actor.find()       //使用find方式查询文档
    { "_id" : ObjectId("57a188010662f146e0bc2a07"), "id" : 1, "name" : "robin", "age" : 25 }

    tempdb> db.actor.insert({id:2,name:"jerry",age:26})
    WriteResult({ "nInserted" : 1 })

    tempdb> db.actor.find()
    { "_id" : ObjectId("57a188010662f146e0bc2a07"), "id" : 1, "name" : "robin", "age" : 25 }
    { "_id" : ObjectId("57a188460662f146e0bc2a08"), "id" : 2, "name" : "jerry", "age" : 26 }

四、更新文档

    语法
    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 :可选,用于控制写入多少个节点后在向客户端应答,抛出异常等。

    //下面将Leshami的年龄从25修改到27
    > db.users.update(
    ... {author:"Leshami"},
    ... {$set:{age:27}}
    ... )
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

    > db.users.find({age:27},{_id:0}).pretty()
    {
            "author" : "Leshami",
            "age" : 27,
            "groups" : [
                    "dba",
                    "operator"
            ],
            "blog" : "http://blog.csdn.net/leshami"
    }

五、删除文档

    语法
    db.collection.remove(
       <query>,
       {
         justOne: <boolean>,
         writeConcern: <document>
       }
    )

    query :(可选)删除的文档的条件。
    justOne : (可选)如果设为 true 或 1,则只删除一个文档。
    writeConcern :可选,用于控制写入多少个节点后在向客户端应答,抛出异常等。

    > db.users.remove({age:28})          //删除年龄为28的文档
    WriteResult({ "nRemoved" : 1 })
    > db.users.find({age:28}).pretty()   //查看文档无返回记录
    > db.users.find().pretty()
    {
            "_id" : ObjectId("57ecb2d9c3f3ec8e414b944c"),
            "author" : "Leshami",
            "age" : 27,
            "groups" : [
                    "dba",
                    "operator"
            ],
            "blog" : "http://blog.csdn.net/leshami"
    }

六、小结

1、本文简要描述了mongoDB的CRUD的常规操作,并给出了示例演示
2、CRUD基本上等同于SQL数据库的增删改查
3、每一个操作都有更详细以及更丰富的用法,具体可参考官方文档

七、更多参考

mongoDB文档插入
mongoDB文档查询
mongoDB文档更新
mongoDB文档删除

DBA牛鹏社(SQL/NOSQL/LINUX)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值