详细介绍, 不详请@me :nosql 数据库---MongoDB的安装和使用, 同时介绍一个终端控制神器
目录
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 Repositorybaseurl=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的安装和使用, 同时介绍一个终端控制神器相关推荐
- NoSQL数据库-MongoDB和Redis
NoSQL数据库-MongoDB和Redis 发布于2012-12-20,来源:比特网 1NoSQL简述 CAP(Consistency,Availabiity,Partitiontolera ...
- 面向文档的NoSQL数据库MongoDB
NoSQL优势 全称:Not Only SQL 不仅仅是数据库 海量的扩展能力 读写高性能 与关系型数据库(RDBMS)相辅相成 NoSQL产品 键值存储型(Key-Value) Redis/Codi ...
- 数据库——MongoDB的安装
1.进入到 /usr/local/ 目录: 1 cd /usr/local 2.安装必要插件 yum -y install gcc make gcc-c++ openssl-devel wget yu ...
- Nosql数据库MongoDB 理论+实践(JAVA API操作) 代码实践
文章目录 一.数据库 数据库的概念: 数据库分类 关系型数据库 非关系型数据库 二.Mongo 存储的数据类型 下载 三个层次 基本指令(shell) 三.Mongo Manager Free 概念 ...
- NoSQL数据库的分布式算法
2019独角兽企业重金招聘Python工程师标准>>> 本文另一地址请见NoSQL数据库的分布式算法 本文译自 Distributed Algorithms in NoSQL Dat ...
- NoSQL数据库的基础知识
关系型数据库和NoSQL数据库 什么是NoSQL 大家有没有听说过"NoSQL"呢?近年,这个词极受关注.看到"NoSQL"这个词,大家可能会误以为是" ...
- 15个nosql数据库
1.MongoDB 介绍 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.主要解决的是海量数据的访问效率问题,为WEB应用提供可扩展的高性能数据存储解决方案.当数据量达到50GB以上 ...
- NoSql数据库:Cassandra,Mongo,Redis数据库比较
1.什么是NoSql数据库? NoSql(不仅是Sql)数据库是可水平扩展,持久存储半结构或非结构化数据并具有灵活模式的非关系数据库. 这些数据库支持多种数据模型,例如键值,文档,列族,基于图形的,内 ...
- 阿里云:加大NoSQL数据库软硬件一体化技术自研
简介:8月25日,在天池平台与阿里云数据库事业部联合主办的阿里云NoSQL数据库峰会上,阿里云公布NoSQL数据库自研2.0计划,进一步加大软硬件一体化技术体系的自研力度,通过聚焦软硬协同.多模融合. ...
最新文章
- Java 多线程(七) 线程间的通信
- 点云 DBSCAN 对点云障碍物聚类
- 从零开始学习docker(八)多台机器通信
- 这个让人看跪了的设计!实力证明,数学才是世界的最终boss!
- 【渝粤题库】陕西师范大学152103 公共行政学
- Java多线程学习三十一:ThreadLocal 是用来解决共享资源的多线程访问的问题吗?
- rdlc报表输入中文出现小方块
- 【OCR三】大批量生成文字训练集(转)
- 建议电脑电源标准逐步去掉-12V、3.3V
- 1)hadoop集群搭建
- 创新声卡KX驱动安装、调试、使用教程
- 性能之殇:从冯·诺依曼瓶颈谈起
- Ubuntu下如何使用编译使用john-1.9.0源码
- 施耐德PLC初始IP地址计算
- YOLOE,2022年新版YOLO解读
- 让人春分日 哈工科教110132.平面分割
- keras中的Convolution1D
- 【JavaScript 刨根问底之】requestAnimationFrame以及延时器
- win10操作系统如何把用户名改成英文的
- 面试改掉呃呃呃_呃...税