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 pymong

  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))
View Code

  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)
View Code

  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)
View Code

  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)
View Code

  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)
View Code

  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

 

  

原文地址:https://www.cnblogs.com/gyh412724/p/10176067.html