MongoDB
当然你也需要安装好MongoDB这个数据库—————————————————————————————————————
一、MongoDB介绍
1、MongoDB介绍
MongoDB是一种可扩展的敏捷NoSQL数据库,其中的Mongo源自单词humongous。MongoDB属于NoSQL
文档存储模型;在这种模型中,数据对象被存储为集合中的文档,而不是传统关系型数据库中的行和列。文档是以二进制JSON
(BSON)对象的方式存储的
1-1、面向文档
MongoDB是面向文档的,数据在数据库中的存储格式与您要在服务器端脚本和客户端脚本中处理的格式非常接近,这避免了将数据在行和对象之间进行转换
1-2、高性能
MongoDB是市面上性能最高的数据库之一,在当今世界,很多用户都与网站交互,因此拥有能够支持庞大流量的后端至关重要
1-3、高可用性
MongoDB的复制模型使其很容易保持高可用性,同时能够提供高性能和高可扩展性
1-4、搞可扩展性
MongoDB的结构使得能够将数据分布到多台服务器,从而轻松地实现横向扩展
1-5、对SQL注入攻击免疫
MongoDB将数据存储为对象,而不使用SQL字符串,因此对SQL注入攻击(通过浏览器在web表单中输入SQL语句,从而威胁DB的安全)免疫
2、MongoDB应用简介
下面列举一些公司MongoDB的实际应用:
Craiglist(大型免费分类广告网站)上使用MongoDB的存档数十亿条记录
FourSquare,基于位置的社交网站,在Amazon EC2的服务器上使用MongoDB分享数据
Shutterfly,以互联网为基础的社会和个人出版服务,使用MOngoDB的各种持久性数据存储的要求
bit.ly,一个基于web的网址缩短服务,使用MongoDB的存储自己的数据
spike.com,一个MTV网络的联营公司,spike.com使用MongoDB的。
Intuit公司,一个为小企业和个人的软件和服务提供商,为小型企业使用MongoDB的跟踪用户的数据。
sourceforge.net,资源网站查找,创建和发布开源软件免费,使用MongoDB的后端存储。
etsy.com,一个购买和出售手工制作物品网站,使用MongoDB。
纽约时报,领先的在线新闻门户网站之一,使用MongoDB。
CERN,著名的粒子物理研究所,欧洲核子研究院中心大型强子对撞机的数据使用MongoDB。
3、集合与文档介绍
MongoDB使用集合将数据编组。结合是一组用途相同或类似的文档,相当于传统SQL数据库中的表,但存一个重要差别:在MongoDB中,集合不受严格模式的管制,其中的文档可根据需要采用稍微不同的结构。这样就无需将文档的内容放在多个不同的表中,而在SQL数据库中经常需要这样做。
在MongoDB的数据库中,文档表示单个实体的数据,而集合包含一个或多个相关的文档。
MongoDB和SQL的一个主要差别在于文档不同于行:行数据是扁平的,每列都包含行中的一个值,而在MongoDB中,文档可包含嵌入的子文档,提供的数据模型与应用程序的要求更一致
4、进入和退出
进入:直接输入mongo
退出:在里面输入exit
端口号:27017默认
二、库和集合的操作
1、库操作语言
1-1、显示所有库
show dbs
默认是有admin、config、local
三个数据库
1-2、切换数据库
知道有哪些数据库后,我们要进入的话
use dbname
比如use student
当数据库不存在时会自动创建
1-3、删除数据库
db.dropDatabase()
退出后会彻底删除
有数据它才会显示这个数据库
1-4、查看在那个数据库
db
默认会自动进入test库
2、集合操作语句
2-1、显示所有集合
show collections
2-2、创建集合
db.createCollection('name')
例如:
db.createCollection('student')
2-3、删除集合
db.集合名字.drop()
例如:
db.stu1.drop()
2-4、默然创建
进入数据库之后,可以不用创建集合,当插入一个不存在的集合时,会自动创建集合
三、文档操作
1、插入
1-1、插入单条
db.集合名称.insert(document)
例如:
db.stu1.insert({'name':'budong','age':18})
1-2、插入多条
db.stu1.insert([{'name':'kongshan','age':18},{'name':'yefeng','age':19}])
多条需要用中括号括起来
1-3、insertOne
现在官方推广这种方法
1-4、insertMany
插入多条
2、查询文档
2-1、查询所有内容
db.集合名.find()
例:
db.stu1.find()
2-2、格式化显示出来
db.stu1.find().pretty()
2-3、带条件查询
db.stu1.find({'name':'budong'}).pretty()
3、条件查询
操作符 | 描述 | 解释 |
---|---|---|
$gt | 大于 | greater than |
$gte | 大于等于 | greater than equal |
$lt | 小于 | less than |
$lte | 小于等于 | less than equal |
$ne | 不等于 | not equal |
$eq | 等于 | equal |
and和or
and的使用,直接用逗号分隔即可
db.stu1.find({'name':'budong','age':18})
or的使用$or[{key1:value1},{key2:value2}]
db.stu1.find({'name':'budong',美元符号or:[{'name':'kongshan'},{'_id':{美元符号ne:1}}]})
4、修改文档
4-1、修改数据
db.集合名字.update(<query,<update,{multi:<boolen})
4-2、全文档替换
将整个文档修改为提供的数据
db.stu1.update({'age':12},{'name':'xiaoyu','age':17})
4-3、指定属性修改
只会修改看到的第一条记录
db.stu1.update({'age':18},{$set:{'age':20}})
4-4、更新所有
更新集合中所有满足条件的文档
db.stu1.update({'age':18},{$set:{'age':20}},{mulit:true})
5、删除文档
5-1、删除语句
db.集合名称.remove(<quary,{justOne:boolean}>)
删除是会默认删除所有符合的文档
5-2、删除一条数据
db.stu1.remove({'age':24},{justOne:true})#表示只删第一条匹配到的数据
db.stu1.remove({'age':24},{justOne:false})#表示删除所有匹配到的数据
5-3、删除所有文档
db.stu1.remove({})
5-4、repairDatabase
remove()方法并不会真正释放空间,需要继续执行db.repairDatabase()来回收磁盘空间
db.repairDatabase()
5-5、新方法
db.stu1.deleteOne({'name':'kongshan'})#表示删除匹配到的第一个数据
db.stu1.deleteMany({'name':'xiaoyu'})#删除匹配到的多条数据
6、总结
6-1、插入
insert
6-2、查询
find
6-3、更新
update
6-4、删除
remove、deleteOne、deleteMany
四、Python交互
1、安装与连接
1-1、安装模块
pip install pymongo
因为这是在Linux上部署的MongoDB,所以安装的模块也在Linux上,如果下载慢的话,可以更换为国内源,如下:
pip install pymongo -i https://pypi.douban.com/simple
这里因为我已经安装了,所以我装下redis的
1-2、连接数据库
这里使用的是pycharm链接的数据库
首先你得使用pycharm连接上安装MongoDB这台系统的Python环境,再执行下面的
import pymongo
client = pymongo.MongoClient()
db = client['test'] #跟上数据库名
colletion = db['student'] #指定集合名
1-3、增删改查
添加insert_one insert_many
collection.insert_one({'name':'kongshan','age':12})
查找find find_one
collection.find() #查找一个
改 update_one update_many
collection.update_one({'name':'kongshan'},{$set:{'age':20}})
删除
collecton.delete_one({'name':'kongshan'})