本章咱们来学习一下关于 MongoDB的增删改查python
一.MongoDB操做 之 原生ORM,根本不存在SQL语句
建立数据库:这里和通常的关系型数据库同样,都要先创建一个本身的数据库空间数据库
是的,MongoDB设计的比较随意,没有就认为你是在建立,use LuffyCity_Com是不存在的,因此MongoDB就认为你是要建立并使用json
这个概念必定要记清楚哦,MongoDB中若是你使用了不存在的对象,那么就等于你在建立这个对象哦post
使用了不存在的对象,就表明建立对象,咱们使用这一谬论建立一张表(Collection)试试学习
看来真的不是谬论,真的成功的建立了一个Oldboy的Collectionspa
那么接下来就是在表(Collection)中添加一条数据了,怎么添加呢?设计
二.MongoDB 之 插入数据(insert insertOne insertMany) 之 Collection 点儿出一切操做 之 insert3d
insert:插入一条或者多条数据,须要带有容许插入多条的参数,这个方法目前官方已经不推荐喽code
db.Oldboy.insert({"name":"DragonFire","age":20})对象
insertOne: 插入一条数据,官方推荐
咱们能够看出来两种方法的返回值大相径庭对吧
insertMany:插入多条数据,无需参数控制,官方推荐
这就是咱们向LuffyCity_Com.Oldboy中插入了多条数据:
[{
"name":"DragonFire", "age":20 },
{
"name":"WuSir",
"age":19
}]
这里留下一个数据类型的悬念
插入完成就要查询
三.MongoDB 之 查询数据(find findOne)
find() 无条件查找:将该表(Collection)中全部的数据一次性返回
db.Oldboy.find({name:"WuSir2b"}) 条件查找:name等于WuSir2b的数据,这里会返回多条结果
说到这里,不由要问一下:"_id":ObjectId("乱七八糟一道对看着毫无关系的一对字符串") 是什么,咱们插入的时候并无一个字段(Field)并无_id这个,
对了这就是MongoDB自动给咱们添加到系统惟一标识"_id" 是一个ObjectId 类型,咱们会在数据类型中第一个说到他
findOne()无条件查找一条数据,默认当前Collection中的第一条数据
findOne({age:19}) : 条件查找一条age等于19的数据,若有多条数据则返回更靠前的数据
查询数据的时候,发现了有些数据出现错误了,要修改怎么办呢?
四.MongoDB 之 修改数据(update updateOne updateMany) 之 跟insert同样,不推荐update的写法
update({"name":"DragonFire"},{$set:{"age":21}}):根据条件修改该条数据的内容
把name等于DragonFire中的age改成21,这里要注意的是({"条件"},{"关键字":{"修改内容"}}),其中若是条件为空,那么将会修改Collection中全部的数据
关于$set关键字的解释就是,本节最后再说,留个悬念
updateOne({"age":19},{$set:{"name":"WSSB"}}):根据条件修改一条数据的内容,如出现多条,只修改最高前的数据
把age等于19的全部数据中第一条数据的name改成WSSB
updateMany({"age":19},{$set:{"name":"pig_qi"}}):根据条件修改全部数据的内容,多条修改
把age等于19的全部数据中的name改成WSSB
上述中有一个$set的悬念,这个悬念呀,可能要留到再日后一些了
可是$set:{"name":"WSSB"}我仍是要解释一下: $set 是update时的关键字,表示我要设置name属性的值为"WSSB"
那么咱们以前说过MongoDB的灵活性,没有就表明我要建立,因此说若是该条Documents没有name属性,他就会自动建立一个name属性而且赋值为"WSSB"
更改了半天,我以为,这些数据我都不想要了,该怎么办呢?
四.MongoDB 之 删除数据(remove)
remove({}):无条件删除数据,这里要注意了,这是删除全部数据,清空Collection
固然了,我如今还不会操做,你看到的截图是我所有都写完以后的截图
若是你的数据全没了,那么请再练习一次insertMany([{"name":"DragonFire"}])吧,你多练习一次,总比立刻忘记要强吧
remove({"name":"DragonFire"}) : 条件删除name等于"DragonFire"的全部Document
那么到这里呢,增删改查就已经完事儿了
pymongo
import json import pymongo from bson import ObjectId mongoclient = pymongo.MongoClient(host="127.0.0.1", port=27017) MongoDB = mongoclient["db1"] # 查询 res = MongoDB.s1.find() for i in res: print(i) i["_id"] = str(i.get("_id")) print(i.get("_id"), type(i.get("_id"))) s = json.dumps(i) # res = MongoDB.s1.find_one({}, {'_id': 0}) # res = list(MongoDB.s1.find({'id': 1}, {'_id': 0})) res = MongoDB.s1.find_one({'age': 44}) # 增长 # res = MongoDB.s1.insert_one({'id': 1, 'name': 'tabai', 'age':55}) # res = MongoDB.s1.insert_many([{'id': 1, 'name': 'tabai', 'age':55},{'id': 2, 'name': 'jinxing', 'age':44}]) # 修改 # res = MongoDB.s1.update_one({'age': 55}, {'$set': {'name': 'white'} }) # res = MongoDB.s1.update_many({'age': 44}, {'$set': {'name': 'gold_star'}}) # 删除 # res = MongoDB.s1.delete_one({'id':1}) # print(res) # sort limit skip # res = list(MongoDB.s1.find({}).limit(5).skip(2)) # res = list(MongoDB.s1.find({}).sort('age', pymongo.DESCENDING).limit(5).skip(2)) # res = list(MongoDB.s1.find({}).sort('age', pymongo.ASCENDING).limit(5).skip(2)) # res = MongoDB.s1.find_one({'_id': ObjectId('5c3edd8d51d50c2bb87e16c4')}) print(res)