python的MongoDB

MongoDB基础

- MongoDB是最像mysql的非关系型数据库(nosql)
MongoDB组织数据的基本形式

在这里插入图片描述
数据库-》集合》文档
- MongoDB的集合相当于MySQL的表,MongoDB的一条文档相当于MySQL的一条数据,文档是json数据形式,键值对
- mysql一般用来存大型数据或关系比较复杂的数据,redis存轻量型,随时能取的数据,MongoDB存监控数据,容易学习
MongoDB运用场景:游戏装备等,tb物流信息,外卖等路线,键值对不固定,实时更新
运用特征:实时变化,吞吐量(qps)每秒查询量
数据类型:MongoDB中文档是json数据

MongoDB操作

- 进入MongoDB:mongo
- 退出:exit

库操作

- 使用数据库:use mydb,没有的数据库也不会报错,创建集合后数据库就存在
- 查看所有数据库:show dbs
- 查看当前所在库:db
- 删库:db.dropDatabase()	#删当前所在库

集合操作

- 创建集合:db.createCollection('student')
- 查:show collections	#查当前库所有的集合
- 删:db.集合名.drop()

集合文档的增删改(更新)查

- 查:db.集合名称.find()
	db.student.find()	#{ "_id" : ObjectId("5c03aab28686ca06b28bc71c"), "name" : "xiaoge", "age" : 16 },注意:value值单引号
	db.student.find().pretty()	#看着美观
	db.student.find({name:'xiaoge'})	#条件查询
	db.student.find({name:'xiaoge'},{}age:1})	#条件查询,只查xiaoge的age,1=true若age=0,则不显示age键值对
- 增:db.集合名称.insert(document)
	db.student.insert({name:'xiaoge',age:16})增一条文档
	db.student.insert({_id:1,name:"xiaoge",age:16})	#第一组键值对是索引数据,不能重复
	增然后查db.student.find()	
	#{ "_id" : ObjectId("5c03ac1e6c2a72288afd36e3"), "name" : "xiaoge", "age" : 16 }	{ "_id" : 1, "name" : "xiaoge", "age" : 16 }
	db.student.insert([{name:'na',age:17},{name:'jingyi',age:19}])	#增多条文档,用[ ]括起来
- 更新:全文档更新db.student.update({name:'xiaoge'},{xx:'yy')
	#把匹配的第一条文档的name:'xiaoge'改为xx:'yy',整条文档(json)更新,原来的age键值对也没了
指定更新:更新文档里的某一个键值对:db.student.update({name:'xiaoge'},{$set:{age:20}})	#更改匹配的第一条
所有匹配的文档都更新:db.student.update({name:'xiaoge'},{$set:{age:20}},{multi:1})
- 删除:db.student.remove({name:'xiaoge'},{justOne:1})	#删一条
db.student.remove({name:'xiaoge'})	#匹配的全删除

python交互

import pymongo	#导入包
client = pymongo.MongoClient('mongodb://localhost27017)	#建立连接
databases = client.list_database_names()#获取所有数据库
db = client['xiaoge']	#获取数据库
collections = db.collection_names()	#获取所有集合
col = db['student']	#获取集合
1.data = col.find({"name":"xiaoge"})	#查所有
   for x in data:
   	print(x)
2.data=col.find_one({"name":"xiaoge"})	#指定条件查
3.条件查询
		1.大于 $gt:db.collection_name.find({age: {$gt:18}})
		2.大于等于 $gte:db.collection_name.find({age: {$gte:18}})
		3.小于 $lt:db.collection_name.find({age: {$lt:18}})
		4.小于等于 $lte:db.collection_name.find({age: {$lte:18}})
		5.不等于 $ne:db.collection_name.find({age: {$ne:18}})
排序查询:sort({key:1/-1}) 表示通过字段key进行排序,-1代表倒序
			# 按照年龄从大到小排序
		db.student.find().sort({age:-1})data = col.find().sort('age',-1)倒序
限制查询:data = col.find().limit(3)
	   	   for item in res
		   	print(res)
4.data=col.insert_one({"name":"wenwen","age":25})	#插一条文档
5.li=[{"name";"xiaoge","age":23},{"name":"na","age":23}]	#插多条文档
   data=col.insert_many(li)	
6.data=col.update_one({"name":"xiaoge"},{"$set":{"age":22}})	#更新一条
7.data=col.update_many({"name":"xiaoge"},{"$set":{"age":22}})	#更新多条
8.data=col.delete_one({})#删第一条
   data=col.delete_one({"name":"xiaoge"})
9.data=col.delete_many({})#删所有
   data=col.delete_many({"name":"xiaoge"})

猜你喜欢

转载自blog.csdn.net/xiaogeldx/article/details/84728738