目录

MongoDB在不同虚拟机系统中的安装步骤:

@Centos系统下的Mongodb安装

@ 介绍一个终端控制神器.

@介绍ubantu虚拟机中安装mongodb

@ Windows本地mongodb 的安装

二,mongodb的基本使用

@ 数据库相关的概念

1. 掌握mongodb关于数据库和集合的基础命令

2. 掌握 mongodb增删改查命令

3. 掌握mongodb高级查询命令

@ mongodb和python交互模块

@使用pymongo


一.MongoDB在不同虚拟机系统中的安装步骤:

@Centos系统下的Mongodb安装

1. 在/etc/yum.repos.d 创建一个 mongodb-org.repo 文件

sduo touch /etc/yum.repos.d/mongodb-org.repo

2. 编辑mongodb-org.repo 文件

sudo vi /etc/yum.repos.d/mongodb-org.repo

3. 将以下内容写入该文件后, 保存退出

[mongodb-org]
                name=MongoDB Repository

baseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/7Server/mongoorg/3.2/x86_64/
                gpgcheck=0
                enabled=1

保存时一定顶格,左边对其.如下

4.保存退出

esc键,   shift + : 键 然后 输入 wq 回车保存.(这是Linux命令,)

5.安装 MongoDB

 sudo yum install -y mongodb-org

6.启动MongoDB

 sudo service mongod start

7. 设置开机启动

sudo chkconfig mongod on

8. 打开MongoDB

sudo /bin/mongo/  或者直接输入: mongo

9. 修改mongodb配置文件,实现远程连接

sudo vi /etc/mongo.conf

将bindip 127.0.0.1 修改为0.0.0.0

@ 介绍一个终端控制神器.

链接:https://pan.baidu.com/s/189fmz7r9IQMTur_jVTTG1A 
提取码:love 

--来自百度网盘超级会员V3的分享

提取直接点击termius.exe文件自动安装.优美的终端界面,将让你无法释怀

话不多说, 直接上正题.

注册termius账号. 点击 sign up 然后输入你的邮箱,和自定义一个密码, 首先这个邮箱必须是可用的, 且是已经创建超过24小时, 要不然无法通过注册.

如果,存在账号, 点击 log in 登录

进入界面, 可以开始连接虚拟机啦.安排..兄弟们

然后, 在address框框输入, 虚拟机ip地址

下一步, 往下划,找到shh连接的username框框输入虚拟机用户,下面的possword输入密码.

最后点击右上角的 save 保存即可.

然后,点击保存好的虚拟机ip, 双击, 然后点击中间的 connect

例:

完成, 然后输入mongo测试运行一下mongodb数据库

 @介绍ubantu虚拟机中安装mongodb

1. 打开虚拟机, 进入ubantu系统, 这里可能存在版本差异,只提供参考, 我的版本是16.04

2. 开启root用户

sudo passwd root

3. 开始安装mongodb,

 sudo apt-get install mongodb 

                        中间的时候输入:  y , 表示yes  (时间有点长,耐心等待一下)

        4. 查看mongodb 数据库是否启动

pgrep mongo -1

5. 如果没有启动,参考如下命令

停止:   sudo service mongodb stop

启动: sudo service mongodb start

6. 运行mongodb

mongo

7. 启动完成, 会出现一个:   >

@ Windows本地mongodb 的安装

MongoDB下载地址:https://www.mongodb.com/download-center?jmp=nav#community

它们的安装很简单,使用默认的配置进行安装即可,安装路径中不要含有中文; 如果后续遇到服务不能正常运行的问题,请使用管理员命令行执行安装程序; 为了后续方便,可以选择将MongoDB安装路径的bin目录添加到系统的Path环境变量.

然后打开终端: 输入mongod  开启mongodb服务

表示开启状态, 切莫关闭在使用的时候

下面命令,: 是将数据保存目录放在 事先设计好的目录,

mongod --dbpath=D:\MongoDb\data\db  (一般不用)

1. 重新开启一个终端窗即.

输入,  mongo  或者 mongo.exe   进入mongodb数据库

到这里我们已经安装完成

介绍到这里,开始实际操作mongodb数据数据库

二,mongodb的基本使用

@ 数据库相关的概念

在一个数据库软件中可以包含多个数据仓库,在每个仓库中可以包含多个数据集合,每个数据集合可以包含多条文档(具体的数据)

术语 解释说明
database 数据库,mongoDB数据库软件中可以建立多个数据库
collection 集合,一组数据的集合,可以理解为JavaScript中的数组
document 文档,一条具体的数据,可以理解为JavaScript中的对象
field 字段,文档中的属性名称,可以理解为JavaScript中的对象属性

1. 掌握mongodb关于数据库和集合的基础命令

这里集合类似sql数据库中的表

查看当前数据库.  db    (没有切换数据库, 默认是test)

查看所有数据库.  show dbs  或者 show databases

查看集合:  show collections

切换数据库    :  use 数据库的名字 例如 : use douban (这里douban为数据库的名字)

        删除数据库: db.dropDatabase()  需要先用use切换到要删除的数据库上

                删除集合: db.集合名称.drop()

例如:  用 use douban 切换为douban这个数据库

然后, 输入:  db.dropDatabase()  进行删除数据库

创建数据库.: 无需手动创建集合:向不存在的集合中第一次添加数据时,集合会自动被创建出来

            手动创建数据库: 

                语法: db.createCollection(name, options)   (name, 为数据库的名字)

                不带参创建: db.createCollection('douban')     创建douban数据库

                 带参创建:  db.createCollection('douban', {capped: true, size: 10})    

解析:  capped : 默认值为false 表示不设置上限, 值为true 表示设置上限

        size: 集合所占用的字节数, 当前capped 值为true时, 需要制定参数设置上限字符大小,

                当文档达到上限是, 会将之前的数据覆盖. 单位: 字符

        检查集合是否设定上限:  db.集合名.isCapped()

 2. 掌握 mongodb增删改查命令

1. 新建数据库 :  use 数据库名

解析:

2. 添加集合 :   db.createCollections(集合名) :  例如:db.createCollections('doubna')

创建 douban集合

3. 添加数据 :   db.douban.insert({name: '张三', age:20})  ; insert(字典数据)

4.添加多条数据:  db.douban.insert({name: '张三', age: 20}, {name: ''李四', age: 30})

在insert()中添加多个字典类型数据

5. 删除数据

db.douban.remove({查询条件}):  删除所有满足条件的数据

db.douban.deleteMany({查询添加}): 删除所有满足条件的数据

db.douban.deleteOne({查询条件}):  删除满足条件的第一条数据

6.修改(更新)数据:

db.douban.update({查询结果}, {$set: {修改的内容}}),

示例:

db.movie.update({name: 'zhangsan'}, {$set: {age: 20}})

注意: update 只修改满足查询条件的第一条数据.

db.douban.updateMany({查询条件}, {$set: {修改内容}})

注意: 修改满足所有的条件数据

db.douban.updateOne({查询条件}, {$set: {修改内容}})

修改满足条件的一条数据

3. 掌握mongodb高级查询命令     

          db.douban.find()

        下面的lanshuang就是这里的douban只是数据库的名字不一样.       

          db.douban.find().pretty()

                注意: pretty()没有实际意义, 在代码中不能使用

            db.douban.find({查询条件})

             且: db.douban.find({name: '张三', 'age': 20})    , 查询满足两个条件的数据

              或:  db.douban.find($or[{name: '张三', "age": 20}, {name: '李四'}])

                非:  db.info.find({name: {$ne: '张三'}})     查询douban集合中name不等于张三的数据                                        

@ mongodb和python交互模块

pip install pymongo  安装交互模块

@使用pymongo

导入pymongo并选择要操作的集合

数据库和集合能够自动创建

@无需权限认证的方式创建连接对象,以及集合的操作对象

from pymongo import MongoClientclient = MongoClient(host ,port)  # host,添虚拟机ip地址, port 参数固定为27017.collection = client[db名][集合名]# collection = client.db名.集合名 # 与上边用法相同

@需要权限认证的方式创建连接对象以及集合操作对象

from pymongo import MongoClientfrom urllib.parse import quote_plususer = '用户名'  # 账号password = '密码'host = '127.0.0.1'  # 虚拟机ip地址port = 27017 # 固定端口url = 'mongodb://%S:%S@%S' % (quote_plus(user), quote_plus(password), host)"""
quote_plus函数: 对url进行编码
url = mongodb://用户名:密码@虚拟机ip地址
例如: url = 'mongodb://python:possword@127.0.0.1'"""
client = MongoClient(url, port=port)
collection = client.db名.集合名

@insert ()添加数据

insert 可以批量的插入数据列表, 也可以插入一条数据

collection.insert({一条数据})
collection.insert([{数据one},{数据two}])

@返回插入数据的id 

ret = collection.insert({'name': '张三', 'age': 20} )
print(ret)

这个就是保存的id,不同的数据保存在数据库的id不一样

这里的报错但是却执行成功了运行是什么原因的, 是因为python代码已经弃用insert这个方法

注意!!!  : 虽然insert弃用,但是它可以成功插入一条或者多条数据,报红只是提醒你他弃用而已.

而是替换成 insert_one(表示插入一个数据)或者insert_many(插入多条数据)

 换用insert_one不会出现报红.且这里的存入id变成了一个对象, 后面是这个对象的内存id.

@添加多条数据

list_item = [{'name': '计算机{}班'}.format(i) for i in range(10)]   # 这是一个列表推导式rets = collection.insert(item_list)print(rets)
for ret in rets:print(ret)"""如果这里使用insert_one将报错使用insert_many,将不能遍历,因为insert_many()这个对象是不可迭代的
"""

 @find_one()查看一条满足条件的数据

result = collection.find_one('name': '计算机1班')

"_id": id对象,    这里的id是不会相同的,即使数据一样

@find()查看全部数据

返回所有满足条件的结果,如果条件为空,则返回全部结果是一个Cursor游标对象,是一个可迭代对象,可以类似读文件的指针,但是只能够进行一次读取

rets = collection.find({'age': 20})
for ret in rets:print(ret)
res = collection.find({'name': '计算机10班'})
print('--'*30)
for re in res:  # 这里res是没有数据可以匹配的print(re)

最后的结果,可以看到却没有报错.说明find查找,即使没有数据,也是可以可迭代对象

@update()更新数据

语法: collection.updae({条件}, {'$set': {指定数据更新}}, multi=False/True, upsert=False/True)

  • multi参数:默认为False,表示更新一条; multi=True则更新多条; multi参数必须和$set一起使用

  • upsert参数:默认为False; upsert=True则先查询是否存在,存在则更新;不存在就插入

  • $set表示指定字段进行更新

@更新一条数据: 全文档覆盖:如果存在就更新, 不存在就插入

注意!!!: update也像insert一样被弃用,但是又并没有完全弃用.

        存在:  update_one, 和update_many

data = {"msg": '这是一条完整的数据', 'name': '哈哈哈'}
collection.update_one({'name': '计算机9班'}, {'$set': data}, upsert=True)# 这里存在,所有更新

# 不存在就添加

data = {'name': '娃哈哈牛奶好喝', 'address': '南京牧场'}collection.update({'name': '计算机9班'}, {'$set': data}, upsert=True)"""这里是不存在, 所以添加"""

@更新多条数据

全文档更新, 存在就更新,不存在就插入

data = {'name': '江苏南京', 'address': '中国东南部'}collection.update_many({}, {'$set': data}, multi=True, upsert=True)"""这里的条件是 {},意思全部匹配 """

这里全部name属性替换掉了.....,添加了address属性

所以,那个全部{ }匹配, 慎用.

@delete_one() 删除一条数据:

collection.delete_one({'name': '江苏南京'})

@delete_many()删除全部数据

collection.delete_many({'name': '江苏南京'})

!!! .关于mongodb数据库操作已经全部讲完.是不是比mysql数据库简单多了

@励志语录

不要让别人举止影响你的心情, 你只需要让自己变得更优秀足以.!!!!

详细介绍, 不详请@me :nosql 数据库---MongoDB的安装和使用, 同时介绍一个终端控制神器相关推荐

  1. NoSQL数据库-MongoDB和Redis

    NoSQL数据库-MongoDB和Redis   发布于2012-12-20,来源:比特网   1NoSQL简述 CAP(Consistency,Availabiity,Partitiontolera ...

  2. 面向文档的NoSQL数据库MongoDB

    NoSQL优势 全称:Not Only SQL 不仅仅是数据库 海量的扩展能力 读写高性能 与关系型数据库(RDBMS)相辅相成 NoSQL产品 键值存储型(Key-Value) Redis/Codi ...

  3. 数据库——MongoDB的安装

    1.进入到 /usr/local/ 目录: 1 cd /usr/local 2.安装必要插件 yum -y install gcc make gcc-c++ openssl-devel wget yu ...

  4. Nosql数据库MongoDB 理论+实践(JAVA API操作) 代码实践

    文章目录 一.数据库 数据库的概念: 数据库分类 关系型数据库 非关系型数据库 二.Mongo 存储的数据类型 下载 三个层次 基本指令(shell) 三.Mongo Manager Free 概念 ...

  5. NoSQL数据库的分布式算法

    2019独角兽企业重金招聘Python工程师标准>>> 本文另一地址请见NoSQL数据库的分布式算法 本文译自 Distributed Algorithms in NoSQL Dat ...

  6. NoSQL数据库的基础知识

    关系型数据库和NoSQL数据库 什么是NoSQL 大家有没有听说过"NoSQL"呢?近年,这个词极受关注.看到"NoSQL"这个词,大家可能会误以为是" ...

  7. 15个nosql数据库

    1.MongoDB 介绍 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.主要解决的是海量数据的访问效率问题,为WEB应用提供可扩展的高性能数据存储解决方案.当数据量达到50GB以上 ...

  8. NoSql数据库:Cassandra,Mongo,Redis数据库比较

    1.什么是NoSql数据库? NoSql(不仅是Sql)数据库是可水平扩展,持久存储半结构或非结构化数据并具有灵活模式的非关系数据库. 这些数据库支持多种数据模型,例如键值,文档,列族,基于图形的,内 ...

  9. 阿里云:加大NoSQL数据库软硬件一体化技术自研

    简介:8月25日,在天池平台与阿里云数据库事业部联合主办的阿里云NoSQL数据库峰会上,阿里云公布NoSQL数据库自研2.0计划,进一步加大软硬件一体化技术体系的自研力度,通过聚焦软硬协同.多模融合. ...

最新文章

  1. Java 多线程(七) 线程间的通信
  2. 点云 DBSCAN 对点云障碍物聚类
  3. 从零开始学习docker(八)多台机器通信
  4. 这个让人看跪了的设计!实力证明,数学才是世界的最终boss!
  5. 【渝粤题库】陕西师范大学152103 公共行政学
  6. Java多线程学习三十一:ThreadLocal 是用来解决共享资源的多线程访问的问题吗?
  7. rdlc报表输入中文出现小方块
  8. 【OCR三】大批量生成文字训练集(转)
  9. 建议电脑电源标准逐步去掉-12V、3.3V
  10. 1)hadoop集群搭建
  11. 创新声卡KX驱动安装、调试、使用教程
  12. 性能之殇:从冯·诺依曼瓶颈谈起
  13. Ubuntu下如何使用编译使用john-1.9.0源码
  14. 施耐德PLC初始IP地址计算
  15. YOLOE,2022年新版YOLO解读
  16. 让人春分日 哈工科教110132.平面分割
  17. keras中的Convolution1D
  18. 【JavaScript 刨根问底之】requestAnimationFrame以及延时器
  19. win10操作系统如何把用户名改成英文的
  20. 面试改掉呃呃呃_呃...税

热门文章

  1. C#编程,使用虚拟键盘的一种方法
  2. 科普向 | 一文读懂什么是AI芯片
  3. 搞清楚字符编码05-万国码[1]
  4. java转俯视图,如何使用纯CSS实现一个足球场的俯视图(附源码)
  5. 商家如何通过抖音带货?揭秘新手kol如何日带万单
  6. linux下mysql安装相关
  7. 21种方法快速上手谷歌SEO
  8. TCP与UDP区别(面试)
  9. 学计算机专业可以做施工员吗,建筑工程技术专业毕业只能做施工员?还有这些岗位可以做...
  10. linux bogon,linux bogon