Mongodb之增删改查
一 Mongodb
首先下载好这个和上一篇文章下载的Mongodb
关于Mongodb的常识
1 它的默认端口 是27017 2 3 show dbs 查看所有存在磁盘上的数据库 4 show tables 查看当前数据库存在磁盘上的数据表 5 6 use 数据库 创建数据库或切换数据库 7 8 ######使用了不能存在的对象即创建该对象###### 9 10 数据库.表名 创建表
二 Mongodb数据的增删改查
#insert db.user.insert({"id":1,"name":"jwb","age":73}) 官方推荐写法 db.user.insertMany([{}]) #增加多条数据 #db.use.insertMany([{'id':4,'name':'hhh','age':40,{'id':5,'name':'aaa','age':30}]) db.user.insertOne({}) #增加一条数据 #db.use.insert({'id':3,'name':'mmm','age':20}
1 1 更新:update 修改器 $set 2 3 #db.user.update({"age":84}, {$set:{"username":"hhh"}}) 4 5 官方推荐写法: 6 db.user.updateOne({"name":"jwb"},{$set:{"age":99}}) #更改一条数据 7 db.user.updateMany({"name":"jwb"},{$set:{"age":99}}) #更改多条数据 8 9 10 11 12 2 13 $修改器: 14 $set : 暴力修改 15 $unset : 暴力删除字段 db.user.updateOne({"name":"ywb"},{$unset:{"hobby":1}}) #'hobby':1 中的1是固定的 16 17 $inc : 引用增加 在原有值的基础上增加 db.user.updateMany({name:'mmm'},{$inc:{age:1}}) 18 #这里的意思是 给名字为mmm的年龄值加1岁 19 20 array修改器: 21 $push 增加元素 :db.user.updateOne({"name":"ywb"},{$push:{"hobby":"jwb"}}) 22 23 #注意 :这里$push 出来的是列表 24 { 25 "_id" : ObjectId("5c3efc5405130ee5819c15ce"), 26 "id" : 1, 27 "name" : "jwb", 28 "age" : 3, 29 "hobby" : [ 30 "yyong" ######### 31 ] 32 }, 33 34 $pull 删除元素 :db.user.updateOne({"name":"ywb"},{$pull:{"hobby":"jwb"}}) 35 #注意 这里只删除hobby中的jwb数据 但是不会删除掉hobby字段 36 37 $pushAll 迭代增加 : 38 db.use.updateOne({name:'jwb'},{$pushAll:{'hobby':['yy','ps','lx']}}) 39 40 #注意 这里迭代增加时 是添加一个列表 41 #{ 42 "_id" : ObjectId("5c3efc5405130ee5819c15ce"), 43 "id" : 1, 44 "name" : "jwb", 45 "age" : 3, 46 "hobby" : [ 47 "yy", 48 "ps", 49 "lx" 50 ] 51 }, 52 53 54 $pop 删除最后一条数据/第一条 : 55 ###注意: 56 最后一条 1的时候代表删除最后一条数据 57 db.user.updateOne({"name":"ywb"},{$pop:{"hobby":1}}) 58 #{ 59 "_id" : ObjectId("5c3efc5405130ee5819c15ce"), 60 "id" : 1, 61 "name" : "jwb", 62 "age" : 3, 63 "hobby" : [ 64 "yy", 65 "ps", 66 ] 67 }, 68 69 第一条 -1的时候代表删除第一条数据 70 db.user.updateOne({"name":"ywb"},{$pop:{"hobby":-1}}) 71 72 #{ 73 "_id" : ObjectId("5c3efc5405130ee5819c15ce"), 74 "id" : 1, 75 "name" : "jwb", 76 "age" : 3, 77 "hobby" : [ 78 "ps", 79 ] 80 }, 81 82 83 $ 字符: 84 ["hj","tt",1,2] # {"hobby":"hj"} hj 是hobby列表中的第0个元素 就把 0 这个数据放在了 $ 中 85 db.user.updateMany({hobby:"hj"},{$set:{"hobby.$":"喝酒"}}) 86 ###### $ 存储符合条件的元素下标索引 ###### 87 88 3 关于Object操作 89 db.user.updateOne({"kecheng.name":"python"},{$set:{"kecheng.price":19800}}) 90 db.user.updateOne({"kecheng.name":"python"},{$inc:{"kecheng.price":500}}) 91 92 Array中的Object 93 db.user.updateOne({"hobby.age":84},{$set:{"hobby.$.age":73}}) 94 95 Object中的Array 96 db.user.updateOne({"kecheng.class":15},{$set:{"kecheng.class.$":20}})
1 查看 find 2 db.user.find() #显示所有 3 db.user.findOne({}) #只显示第一条数据 4 5 #结果 6 { "_id" : ObjectId("5c3efc5405130ee5819c15ce"), "id" : 1, "name" : "jwb", "age" : 73 } 7 { "_id" : ObjectId("5c3efd9305130ee5819c15cf"), "id" : 1, "name" : "www", "age" : 77 } 8 9 #注意ObjectId是唯一的 因此以后不需要id作为标识 有ObjectId就可以区别 10 11 db.user.find({"id":2,"age":85}) 并列条件 12 13 或条件:$or 14 db.user.find({$or:[{age:73},{name:"ywb"}]}) 15 16 同一个字段的 或条件 17 $in : db.user.find({age:{$in:[73,84,86]}}) 18 19 子集检索 20 db.user.find({what:{$in:[2,1]}}) ?????? 21 22 $all : 满足所有条件 23 db.user.find({what:{$all:[2,1,3]}}) ???? 24 25 26 数学比较符: 27 $gt : 大于 28 db.user.find({age:{$gt: 73}}) 29 30 $gte: 大于等于 31 db.use.find({age:{$gte:73}}) 32 33 $lt : 小于 34 db.use.find({age:{$lt:40}}) 35 36 $lte: 小于等于 37 db.use.find({age:{$lte:45}}) 38 39 $eq : 等于 40 :也是等于
更新:update 修改器 $set #db.user.update({"age":84}, {$set:{"username":"jinjiaodawangba"}}) 官方推荐写法: db.user.updateOne({"name":"jwb"},{$set:{"age":99}}) db.user.updateMany({"name":"jwb"},{$set:{"age":99}})
三 Mongodb的数据类型
1 ObjectID :Documents 自生成的 _id 2 String: 字符串,必须是utf-8 3 Boolean:布尔值,true 或者false (这里有坑哦~在我们大Python中 True False 首字母大写) 4 Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32) 5 Double:浮点数 (没有float类型,所有小数都是Double) 6 7 #注意 无float型 8 9 Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦) 10 Object:如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典 11 Null:空数据类型 , 一个特殊的概念,None Null 12 13 Timestamp:时间戳 14 Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型) 15 16 17 MongoDB中的跳过选取排序: 18 skip(5) 跳过五条数据 19 limit(5) 只显示五条数据 20 分页 skip(5).limit(5) 21 22 sort({age:1}) 正序 23 sort({age:-1}) 倒序 24 25 如果三个关键字同时出现 26 1.sort 2.skip 3.limit
四 Mongodb的$
$修改器: $set : 暴力修改 $unset : 暴力删除字段 db.user.updateOne({"name":"ywb"},{$unset:{"hobby":1}}) #'hobby':1 中的1是固定的 $inc : 引用增加 在原有值的基础上增加 db.user.updateMany({name:'mmm'},{$inc:{age:1}}) #这里的意思是 给名字为mmm的年龄值加1岁 array修改器: $push 增加元素 :db.user.updateOne({"name":"ywb"},{$push:{"hobby":"jwb"}}) #注意 :这里$push 出来的是列表 { "_id" : ObjectId("5c3efc5405130ee5819c15ce"), "id" : 1, "name" : "jwb", "age" : 3, "hobby" : [ "yyong" ######### ] }, $pull 删除元素 :db.user.updateOne({"name":"ywb"},{$pull:{"hobby":"jwb"}}) #注意 这里只删除hobby中的jwb数据 但是不会删除掉hobby字段 $pushAll 迭代增加 : db.use.updateOne({name:'jwb'},{$pushAll:{'hobby':['yy','ps','lx']}}) #注意 这里迭代增加时 是添加一个列表 #{ "_id" : ObjectId("5c3efc5405130ee5819c15ce"), "id" : 1, "name" : "jwb", "age" : 3, "hobby" : [ "yy", "ps", "lx" ] }, $pop 删除最后一条数据/第一条 : ###注意: 最后一条 1的时候代表删除最后一条数据 db.user.updateOne({"name":"ywb"},{$pop:{"hobby":1}}) #{ "_id" : ObjectId("5c3efc5405130ee5819c15ce"), "id" : 1, "name" : "jwb", "age" : 3, "hobby" : [ "yy", "ps", ] }, 第一条 -1的时候代表删除第一条数据 db.user.updateOne({"name":"ywb"},{$pop:{"hobby":-1}}) #{ "_id" : ObjectId("5c3efc5405130ee5819c15ce"), "id" : 1, "name" : "jwb", "age" : 3, "hobby" : [ "ps", ] }, $ 字符: ["hj","tt",1,2] # {"hobby":"hj"} hj 是hobby列表中的第0个元素 就把 0 这个数据放在了 $ 中 db.user.updateMany({hobby:"hj"},{$set:{"hobby.$":"喝酒"}}) ###### $ 存储符合条件的元素下标索引 ######
五 关于pymongo
1 首先你要下载好pymongo,否则在导入时会报错
import pymongo import json from bson import ObjectId mongoclient = pymongo.MongoClient(host="127.0.0.1",port=27017) #连接MongoClient MongoDB = mongoclient["locals"] #连接你要操作的数据库 res = MongoDB.user.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.user.find_one({},{"_id":0}) #注意 这里的{'_id':0} 去掉第一个数据'_id':ObjectId print(res) res = list(MongoDB.user.find({"id":1})) print(res) #增加 res = MongoDB.user.insert_one({"id":1,"age":55,"name":"taibai"}) print(res,type(res),res.inserted_id) res = MongoDB.user.insert_many([{"id":1,"age":55,"name":"taibai"},{"id":1,"age":55,"name":"taibai"}]) print(res,type(res),res.inserted_ids) # 修改: res = MongoDB.user.update_one({"age":55},{"$set":{"name":"四金"}}) print(res,dir(res)) MongoDB.user.update_many({"age":55},{"$set":{"name":"四金"}}) #删除: res = MongoDB.user.delete_one({"id":1}) res = MongoDB.user.delete_many({"id":1}) # sort limit skip res = list(MongoDB.user.find({}).limit(5).skip(2)) print(res) res = list(MongoDB.user.find({}).sort("age",pymongo.DESCENDING).limit(5).skip(2)) print(res) # s = ObjectId("5c3ea77e23652a0218a5ab9a") # # res = MongoDB.user.find_one({"_id":ObjectId("5c3ea77e23652a0218a5ab9a")}) # print(res)