前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mongoDB CRUD特性介绍

mongoDB CRUD特性介绍

作者头像
Leshami
发布2018-08-13 11:40:59
4640
发布2018-08-13 11:40:59
举报
文章被收录于专栏:乐沙弥的世界乐沙弥的世界

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

预备热身 Linux下快速安装MongoDB

Windows平台下安装MongoDB

mongoDB 启动与停止

mongo shell连接到mongoDB及shell提示符下执行js脚本

mongoDB简介及关键特性

SQL与mongoDB对比及映射

一、创建数据库

代码语言:javascript
复制
    //演示环境
    # 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

二、创建文档

代码语言:javascript
复制
  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 })

三、查询文档

代码语言:javascript
复制
    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 }

四、更新文档

代码语言:javascript
复制
    语法
    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"
    }

五、删除文档

代码语言:javascript
复制
    语法
    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文档删除

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年10月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、创建数据库
  • 二、创建文档
  • 三、查询文档
  • 四、更新文档
  • 五、删除文档
  • 六、小结
  • 七、更多参考
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档