主要内容:
1 mongodb的安装:https://www.cnblogs.com/DragonFire/p/9135630.html
2 使用mongodb数据库的增删改查
use db 使用该数据库 show dbs 查看当前服务器中写在磁盘上的数据库 show tables 查看数据库中的collection
a : 数据的增加:
db.user_info.insertOne({name:"ywb",age:73}) db.user_info.insertMany([{name:"dwb",age:999},{name:"lwb",age:999.5}])
b : 数据的查询:
db.collection.find({条件}) db.collection.findOne({条件})
db.user_info.find({},{"_id":0,"name":0}) #find后面可以跟过滤条件 带关键字的查询: 数学比较符: $gte, $lte, $eq, $gt, $lt db.user_info.findOne({id:{$gt: 1}}) db.user_info.findOne({id:{$eq: 1}}) $or db.collection.find({$or:[{name:1},{age:73}]}) $in db.collection.find({age:{$in:[1,2,3,4]}}) #符合其中一个条件即可 $all db.collection.find({hobby:{$all:[1,2,3,4]}}) #子集查询
c : 数据的修改:
db.collection.updateOne({条件},{$修改器:{数据}}) 更新一条数据 db.collection.updateMany({条件},{$修改器:{数据}}) 更新所有数据 db.user_info.updateMany({id:{$gt: 0}},{$set:{name:2}})
d : 数据的删除:
db.collection.deleteOne({条件}) 删除一条数据 db.collection.deleteMany({条件}) 删除所有符合条件的数据
db.collection.drop() 删除表
3 mongodb中的update修改器: $inc $set $unset $push $pull
a : $inc 对查询的结果在原有的基础上进行增加或者减少
db.user_info.updateOne({age:27},{$inc:{age:1}}) db.user_info.updateOne({age:28},{$inc:{age:-8}})
b : $set 直接替换原来的值; 对原有的数据增加一个field
db.user_info.updateOne({},{$set:{test_list:[1,2,3,4,5,6,7,8]}}) db.user_info.updateOne({age:20},{$set:{age:21}})
c : $unset 用来删除key(field)
db.user_info.updateOne({id:1},{$unset:{name:1}})
d : $push 用来操作array数据类型进行增加新元素, 相当于列表的append方法
db.user_info.updateOne({id:1},{$push:{hobby:3}})
e : $pull 与push对应,用来删除array中的某个元素
db.user_info.updateOne({id:1},{$pull:{test_list:8}})
f : $pop 指定删除array中的第一个或者最后一个元素. -1代表最前面, 1代表最后面, 正数后面,复数前面
db.user_info.updateOne({id:1},{$pop:{test_list:1}})
4 $字符 保存符合索引条件数据的下标
#当出现多个四时, 采用$保存符合条件的数据的下标.
db.user_info.updateOne({test_list:4},{$set:{"test_list.$":"四"}})
5 object的操作
db.user_info.updateOne({id:1},{$set:{"info.height":161}}) db.user_info.updateOne({id:1},{$inc:{"info.weight":-7}})
6 array +object的操作
db.user_info.updateOne({"hobby.weight":100},{$set:{"hobby.$.height":164}})
7 limit sort skip
db.user_info.find().limit(2).skip(1).sort({ id:-1 })
重点: limit +skip +sort执行是有优先级别的, sort>skip>limit
skip + limit的优先级: 先skip再limit
8 pymongo
a : 用于连接数据库
import pymongo import json from bson import ObjectId mongo_client = pymongo.MongoClient(host="127.0.0.1",port=27017) db = mongo_client["day120"]
b : 增加数据
res = db.user_info.insert_one({"id":15,"name":16}) print(list(db.user_info.find())) print(res, res.inserted_id) # <pymongo.results.InsertOneResult object at 0x000001BF04838308> 5c21f8429221292820de73b2 res = db.user_info.insert_many([{"id":16,"name":17},{"id":17,"name":18}]) print(list(db.user_info.find())) # 查询多个id, 用inserted_ids print(res, res.inserted_ids) print(res, type(res))
c : 删除数据
res = db.user_info.delete_many({"id":7}) res = db.user_info.delete_one({"id":6}) # 显示删除了几条数据, res.raw_result print(res, dir(res), res.raw_result)
d : 修改数据
res = db.user_info.update_one({"id":1},{"$set":{"name":"yuanyuan"}}) print(res, res.raw_result) res_obj = db.user_info.find_one({"name":"yuanyuan"}) print(res_obj)
e : 查询数据
# 把获取的生成器转换成列表 # res = list(db.user_info.find({})) # print(res) # res = db.user_info.find_one({"id":1}) # print(res) # res = list(db.user_info.find({"name":{"$in":["shishi",3,4]}})) # print(res) # res = list(db.user_info.find({"$or":[{"name":2},{"id":3}]})) # print(res)
f : 对于objectid json的操作
res = db.user_info.find_one({"id":2,"name":3}) print(res) # 对于json序列化的时候, 不能直接序列化ObjectId的类型, 所以把其转换成字符串 # 对于再反过来取的时候, 需要把字符串转换成ObjectId类型 res["_id"] = str(res["_id"]) res_json = json.dumps(res) print(res_json) #Object of type 'ObjectId' is not JSON serializable res_obj = db.user_info.find_one({"_id":ObjectId(res.get("_id"))}) print(res_obj)
h : python中的update
# 相比较于下面的方法更加的方便 res = db.user_info.find_one({"name":"yuanyuan"}) res.get("info")['height'] = 170 res.get("info")['weight'] = 115 print(res) res = db.user_info.update_one({"id":1},{"$set":{"info.height":180}}) print(list(db.user_info.find()))
l : skip sort limit
res = list(db.user_info.find().limit(2)) print(res) # limit+skip的优先级: skip>limit res = list(db.user_info.find().limit(2).skip(1)) print(res) # 注意排序和mongo中的语法不一致 # limit skip sort: sort> skip > limit res = list(db.user_info.find({}).sort("id",pymongo.DESCENDING).skip(1).limit(3)) print(res)
9 mongodb的使用场景及优势:https://wenku.baidu.com/view/da471b54773231126edb6f1aff00bed5b9f373b4.html