MongoDB
MongDB
文件形数据库
非关系形
默认端口27017
mongoDB的使用
1.windows需要配置环境变量
2.mongod --dbpath="F:/data/db" #--dbpath 指定mongoDB的数据存储目录 #注意空格
--->客户端开启 mongo --->默认自己电脑和默认端口
3.mongoDB数据库的新建
---> 使用了不存在的对象,即 创建该对象
mongodb指令
show databases --->查看本地磁盘数据库
use database_name --->切换当前使用的数据库
--->use 不存在的数据库名,即 在内存中创建该数据库
db --->查看当前使用的数据
show tables --->查看数据库磁盘中所有的表
db.不存在的表名 --->在数据库中(内存中)创建该表
增删改查
------------------------------------------------------
db.表名.insert({}) --->增
db.user.insert[{},{}] 增加多条
db.表名.find({查询条件}) --->查
--->db.表名.find({查询条件:1,查询条件:2}) --->并列条件查询
--->db.表名.findOne({查询条件:x}) --->查询条件的第一条数据
--->$数据比较符
$lt 小于
$lte 小于等于
$gt 大于
$gte 大于等于
$eq 等于
$noeq 不等于
例:
db.表名.find({age:{$gt:70) --->年龄大于70
db.表名.update --->改
所有mangodb的修改全部基于 修改器($修改器 关键字)
$set --->强制将某字段修改。如果该字段不存在即创建该字段并赋值
db.user.update({age:66.66},{$set:{age:44}})
$unset --->删除字段
db.user.update({age:66.66},{$unset:{ag11e:1}})
$inc ---> 引用增加,先引用原有数据,在原有数据基础上增加(加负数即为减少)
db.user.update({age:66.66},{$inc:{age:1}})
针对 Array(list)操作
$push ==append
$pushAll ==extends
$pull ==remove()
$pullAll 遍历删除所有符合条件的数据
db.user.update({age:66.66},{$pullall:{hobby:[1,2,3,4,5]}})
$pop ~= pop()
删除Array最后一条或者第一条(-1为从上往前删,1从下往上删)
db.表名.remove --->不写条件删除表
--->db.表名.remove({查询条件}) --->删除指定条件
高阶增删该查(官方推荐)
增:
db.mongo1.insertOne({}) --->增加一条数据
db.mongo1.insertMany([{},{}]) --->增加多条数据
改:
db.mongo1.updateOne({},{$set:{}}) --->修改第一条数据
db.mongo1.updateMany({},{$set:{}}) --->修改符合条件的所有数据
删:
db.mongo1.deleteOne({}) --->删除第一条数据
db.mongo1.deleteMany({}) --->删除符合条件的所有数据
$关键字的修改:
$是用来存储符合当前Array条件元素的下标索引
例:
db.user.updateOne({name:"太白",hobby:"合计"},{$set:{"hobby.$":"飙车"}})
解析:
当前Array - ["抽烟","喝酒",'烫头']
条件元素 - {hobby:"喝酒"}
~~~~ 10.53
mongoDB的数据类型
Object ID :Documents 自生成的 _id
String: 字符串,必须是utf-8
Boolean:布尔值,true 或者false (这里有坑哦~在我们大Python中 True False 首字母大写)
Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32)
Double:浮点数 (没有float类型,所有小数都是Double)
Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)
Object:如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典
Null:空数据类型 , 一个特殊的概念,None Null
Timestamp:时间戳
Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)
选取,跳过,排序
排序
db.user.find({}).sort({age:-1}) 倒序
db.user.find({}).sort({age:1}) 正序
跳过
db.user.find({}).skip(跳过条目)
选取
db.user.find({}).limit(500) 选取500条数据,如果数据小于500条,则全部选区
组合使用
db.user.find({}).sort({age:-1}).skip(1).limit(2)
都存在时执行顺序为:
sort>skip>limit
python操作mongodb
导入PyMongo
from pymongo import MongiClient
创建连接(创建mongodb客户端)
MC = MongoClient("127.0.0.1",27017) #IP地址,端口号
选择或者创建数据库(内存)
db=MC["s22"] #有则选择,无则创建
增加数据到数据库
res=db.player.insert_one(#对象) #增加一个
res.inserted_id #得到一个bson ID ,不能直接被JSON序列化
res=db.player.insert_many([#对象1,#对象2]) #增加多个
res.inserted_ids #返回一个列表,列表内为objectID
查询数据
res=db.player.find({}) #res得到的结果为对象
res=db.player.find_one({"name":"luyi"}) #查询符合条件的第一条数据
res=db.player.find_one({'def':{"$gt":80}}) #查询符合条件大于80的数据,lt表示小于
更新数据
res=db.player.update_one({'name':'luyi'},{'$set':{'hp':80}}) #修改符合条件的第一条数据
res=db.player.update_many({},{'$set':{'hp':80}}) #修改符合条件的所有数据,空代表所有数据
删除数据
res=db.player.delete_one({}) #删除符合条件的数据
res=db.player.delete_one({'_id':objerctID("ID")}) #删除该ID(必须objectID,直接写ID无法删除)
res.deleted_count #查看删除数据的条数
将数据使用JSON转化后发送
res=db.player.find_one({"name":"luyi"}) #查出该条数据
res['id']=str(res.get('id')) #因为存在objectID对象,需要转化成字符串再传输
排序,选取,跳过
from pymongo import ASCENDING,DESCENDING #ASCE 正序,DESC 倒序
res=db.player.find({}).limit(2),skip(2).sort("_id",DESCENDING) #先倒序排列,后跳过,然后选取
flask+mongo
使用res=request.form.to_dict() #将获取到的数据转换成字典
dic=MongoDB.user.find_one(res) #使用转换的字典查询
dic["_id"]=str(dic['_id']) #需要将objectID转换成字符串