• MongoDB的安装与简单使用


    一、安装MongoDB的步骤

    注:本教程全部统一采用hadoop用户名登录Linux系统,用户名:hadoop 密码:hadoop

    • ​ 首先,在Linux系统中打开一个终端,执行如下命令导入公共秘钥到包管理器中:
     $sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
    
    • ​ 然后,创建MongoDB的文件列表,命令如下:
    $ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb.list
    
    •  执行如下命令来更新包管理器
    $ sudo apt-get update
    • 最后,执行如下命令安装MongoDB:
    $ sudo apt-get install -y mongodb-org
    •  安装完成后,在终端输入以下命令查看MongoDB版本:
    $ mongo -version
    • 安装成功以后,启动MongoDB的命令如下:
    $ systemctl daemon-reload
    $ systemctl start mongod
    
    • 默认设置下,MongoDB是随Ubuntu启动而自动启动的。可以输入以下命令查看是否启动成功:
    $ pgrep mongo -l #注意:-l是英文字母l,不是阿拉伯数字1
    
    • 使用MongoDB结束后,关闭MongoDB的命令如下:
    $ sudo service mongodb stop​
    

      

    二、使用shell命令操作MongoDB

    1、进入MongoDB的shell命令

    • 在Linux系统打开一个终端,输入如下命令启动MongoDB:(密码为:hadoop)
    $ systemctl daemon-reload
    $ systemctl start mongod
    
    • 再输入如下命令进入MongoDB Shell模式:
    $ mongo
    
    • 进入MongoDB Shell模式以后,默认连接的数据库是test数据库,可以在命令提示符“>”后面输入各种Shell命令来操作MongoDB数据库。

    2、常用操作命令

      如果要创建一个名称为“School”的数据库,需要先运行“use School”命令,之后做一些操作,比如,使用命令“db.createCollection('teacher')”创建集合,这样就可以创建一个名称为“School”的数据库,执行过程如下。

    (1)切换到School数据库(​ 注意,MongoDB无需预创建School数据库,在使用时会自动创建。)

    > use school

    补充:

    use命令:如果数据库不存在,则创建数据库,否则切换到指定数据库;

    如果发现刚刚敲错了,写成了use school1;这时候,希望删除school1这个数据库,就切换到该数据库下,再键入删除命令;

    >use school1;
    >db.dropDatabase();  

    (2)创建集合

    > db.createCollection('teacher')
    

    (3)插入数据(与数据库创建类似,插入数据时也会自动创建集合。)

    插入数据有两种方式:insert和save,具体命令如下: 

    > db.student.insert({_id:1, sname: 'zhangsan', sage: 20})  #_id可选
    > db.student.save({_id:1, sname: 'zhangsan', sage: 22})  #_id可选
    

    这两种方式,其插入的数据中id字段均可不写,系统会自动生成一个唯一的id来标识本条数据。

    insert和save两者的区别在于:

    • 在手动插入id 字段时,如果id已经存在,insert不做操作,而save会做更新操作;
    • 如果不加_id字段,两者作用相同,都是插入数据 

    添加的数据的结构是松散的,只要是bson格式均可,列属性均不固定,以实际添加的数据为准。可以先定义数据再插入,这样就可以一次性插入多条数据,如下图所示。

     (4)查找数据

    > db.youCollection.find(criteria, filterDisplay)​

    备注:

    criteria:查询条件,可选

    filterDisplay:筛选显示部分数据,如显示指定列数据,可选(当选择时,第一个参数不可省略,若查询条件为空,可用{}做占位符)

    •  查询所有记录 ( 该命令相当于关系数据库的SQL 语句“select * from student”。)
    > db.student.find()
    
    •  查询sname='lisi'的记录(该命令相当于关系数据库的SQL 语句“select * from student where sname='lisi'”。)
    > db.student.find({sname: 'lisi'})
    
    •   查询指定列sname、sage数据
    > db.student.find({},{sname:1, sage:1})
    

     该命令相当于关系数据库的SQL 语句“select sname,sage from student”。

        其中,sname:1表示返回sname列,默认id字段也是返回的,可以添加id:0(意为不返回id),写成{sname: 1, sage: 1,id:0},就不会返回默认的_id字段了。 

    •  AND条件查询
    > db.student.find({sname: 'zhangsan', sage: 22})  

    该命令相当于关系数据库的SQL 语句“select * from student where sname = 'zhangsan' and sage = 22”。

    • OR条件查询
    > db.student.find({$or: [{sage: 22}, {sage: 25}]})
    

     ​ 该命令相当于关系数据库的SQL 语句“select * from student where sage = 22 or sage = 25”。 

    • 格式化输出

    对于查询结果,也可以采用pretty()进行格式化输出,命令执行结果如下图所示。

     (5)修改数据

    > db.youCollection.update(criteria, objNew, upsert, multi )
    
    • criteria:update的查询条件,类似sql update查询内where后面的
    • objNew:update 的对象和一些更新的操作(如$set)等,也可以理解为 sql update 查询内set后面的
    •  upsert:如果不存在update的记录,是否插入objNew, true为插入,默认是false,不插入。
    •  multi:mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多余的记录全部更新。默认false,只修改匹配到的第一条数据。
    • 其中criteria和objNew是必选参数, upsert和 multi是可选参数

    这里给出一个实例,语句如下:

    > db.student.update({sname: 'lisi'}, {$set: {sage: 30}}, false, true)
    

    该命令相当于关系数据库的SQL 语句“update student set sage =30 where sname = 'lisi';”。

    (6)删除数据

    > db.student.remove({sname: 'chenliu'})  

    该命令相当于关系数据库的SQL 语句“delete from student where sname='chenliu'”。

    (7)删除集合

    > db.student.drop()
    

    (8)退出MongoDB Shell模式

    可以输入如下命令退出MongoDB Shell模式:

    > exit
    

    或者也可以直接按键盘的Ctrl+C组合键,退出Shell命令模式。

  • 相关阅读:
    微信小程序中 数据缓存
    javascript 数组去重方法
    常用网站 ---总结
    vue面试题
    vue创建项目(命令方式)
    shutil 模块:文件复制.移动.压缩.解压.递归删除文件夹
    面向对象一些零散的知识点
    面向对象之多态
    面向对象与继承
    序列化与反序列化的三个模块:json pickle shelve
  • 原文地址:https://www.cnblogs.com/py2019/p/11988267.html
Copyright © 2020-2023  润新知