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转换成字符串
posted @ 2019-10-06 15:41  路一  阅读(228)  评论(0编辑  收藏  举报