121 monogdb安装, 增删改查, mongodb中的update修改器 pymomgo
主要内容:
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

浙公网安备 33010602011771号