MongoDB介绍:
MongoDB是一种可扩展的敏捷NoSQL数据库。MongoDB 将数据存储为一个文档,数据结构由键值对组成。
MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
面向文档:
MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易。
高性能:
MongoDB是市面上性能最高的数据库之一。在当今世界,很多用户都与网站交互,因此拥有能够支持庞大流量的后端至关重要
高可用性:
MongoDB的复制模型使其很容易保持高可用性,同时能够提供高性能和高可扩展性。
高可扩展性:
MongoDB的结构使得能够将数据分布到多台服务器,从而轻松地实现横向扩展
对SQL注入攻击免疫:
MongoDB将数据存储为对象,而不使用SQL字符串,因此对SQL注入攻击(通过浏览器在Web表单中输入SQL语句,从而威胁DB的安全)免疫 。
集合与文档的介绍:
MySQL |
MongoDB |
数据库 表 行 |
数据库 集合 文档 |
数据库(database) |
数据库(database) |
表(table) |
集合(collection) |
行 |
文档 |
库与集合操作:
库级基本操作:
进入:mongo 退出:exit
切换/进入数据库 use 库名 (当数据库不存在时会自动创建)
显示所有数据库
show dbs
查看在哪个数据库
db
默认会自动进入 test 库
db.dropDatabase() 需要先进入库才能对应删除
use xb (如果不存在创建一个新的库)
但是如果紧接着用 use xb 则发现 xb 不在默认的库中(因为没有数据存储,不会显示)
现在创建集合:
>db.createCollection("xiaobai")
现在 show dbs ,库就会被显示出来
>db.dropDatabase()
这是删除库 xb
集合操作语句:
创建集合:
db.createCollection('集合名字')
显示所有集合:
show collections
删除集合:
db.集合名字.drop()
默认创建:
进入数据库之后,可以不用创建集合,当插入一个不存在的文档时,会自动创建集合
01 插入单条:
db.集合名.insert(document)
> db.student.insert({ "name":"xiaobai" , "age"":18 })
# 直接插入数据,当文档不存在时,进行创建
02 插入多条:
db.student.insert([document1,document2.....])
> db.student.insert([{"name":"dongli","age":38},{"name":"qianqian","age":28}])
03 最新方法:
插入单条:insertOne
插入多条:inseryMany
db.集合名字.find() |
查询所有内容 |
db.集合名字.find().pretty() |
格式化显示 |
db.集合名字.find(条件) |
条件查询 |
条件查询:
操作符 |
描述 |
解释 |
$gt |
大于 |
greater than |
$gte |
大于等于 |
gt equal |
$lt |
小于 |
less than |
$lte |
小于等于 |
lt equal |
$ne |
不等于 |
not equal |
$eq |
等于 |
equal |
逻辑查询:
and:
db.库名.find({key1: value1, key2: value2})
or:
db.库名.find({$or: [ {key1: value1}, {key2: value2} ]})
修改文档:
db.集合名字.update( |
|
db.集合.update(查询条件,更新的字段) |
更新满足条件的第一个文档,将整个文档修改为提供的数据 |
db.集合.update(查询条件, {$set:更新的字段}) |
指定字段修改 |
db.集合.update(查询条件,更新的字段,{multi:true}) |
修改所有满足条件的文档 |
db.集合.updateOne(查询条件,{$set:更新的字段}) |
修改单条 |
db.集合.updateMany(查询条件,{$set:更新的字段}) |
修改多条 |
删除文档:
删除一条数据:
db.集合名.remove(查询条件,(justOne:ture))
删除语句:
db.集合名称.remove(查询条件)
删除是会默认删除所有符合的文档
删除所有文档:
db.student.remove({})
remove() 方法 并不会真正释放空间 需要继续执行 db.repairDatabase() 来回收磁盘空间 db.repairDatabase()
新方法:
db.集合名称.deleteOne(查询条件)
db.集合名称.deleteMany(查询条件)
安装模块:
pip install pymongo
连接数据库:
import pymongo
client = pymongo.MongoClient()
db = client["test"] # 跟上数据库名
collection = db["student"] # 指定集合名
增删改查:
添加 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}})
删除 collection.delete_one({"name":"kongshan"})