2.Windows11安装MongoDB Shell 2.1.0
一、理论
1.PyMongo模块
(1)概念
在python当中,一般常用于开发中操作monoDB的模块有如下三个:
1)pymongo
2)mongoengine
3)moter
它是python中基于pymongo实现的异步操作库,类似于aiomysql,aiomysql也是python基于pymysql实现的异步库。
2.Mongo Shell
(1)概念
MongoShell是一个互动的JavaScript接口的MongoDB,可以使用MongoShell来查询和更新数据以及执行管理操作。
MongoShell是MongoDB发行版的一个组件, 安装并启动MongoDB后,将MongoShell连接到正在运行的MongoDB实例,MongoDB手册中的大多数示例使用 MongoShell,然而,许多驱动程序也提供了与MongoDB类似的接口。
二、实验
1. Windows11安装MongoDB 7.0.4
(1)下载
Download MongoDB Community Server | MongoDB
(6)OK
(8)next下一步
(9)这里取消Install MongoDB compass,next下一步
2.Windows11安装MongoDB Shell 2.1.0
(1)下载
Try MongoDB Tools – Download Free Here | MongoDB
3.PyMongo 连接 MongoDB(无密码方式)
(1)安装PyMongo
(2)数据库连接
# -*- coding: utf-8 -*-
import pymongo
if __name__ == '__main__':
# 无密码连接mongoDB
mongo = pymongo.MongoClient('localhost',27017)
print(mongo)
#切换数据库
db = orders = mongo["demo"]
#切换数据集
orders = db["orders"]
#print(orders.find())
#查询100条数据
for document in orders.find().limit(100):
print(document)
① 运行
③运行
④拿到游标
⑤ 运行
4.PyMongo 连接 MongoDB(有密码方式)
# -*- coding: utf-8 -*-
import pymongo
from urllib.parse import quote_plus
if __name__ == '__main__':
# 有密码连接mongoDB
username = quote_plus("david")
password = quote_plus("123456")
# 获取数据库连接对象
mongo = pymongo.MongoClient(f"mongodb://{username}:{password}@127.0.0.1:27017/david")
print(mongo)
# 获取数据库操作对象
db = mongo["david"]
print(db)
#获取集合操作对象
user_list = db["user_list"]
# 获取数据
for document in user_list.find():
print(document)
(2)数据库连接(方式二)
# -*- coding: utf-8 -*-
import pymongo
from urllib.parse import quote_plus
if __name__ == '__main__':
#有密码连接mongoDB
mongo = pymongo.MongoClient('mongodb://127.0.0.1:27017')
db = mongo["david"]
username = "david"
password = "123456"
db.authenticate(username, password)
print(db)
collection = db["user_list"]
print(collection)
for document in collection.find():
print(document)
① 密码连接
②查询数据
③ 成功
④ 成功
5.PyMongo 操作 MongoDB (数据库管理)
(1)数据库管理
# -*- coding: utf-8 -*-
import pymongo
# from bson import ObjectId
if __name__ == '__main__':
#有密码连接mongoDB
mongo = pymongo.MongoClient('mongodb://127.0.0.1:27017')
db = mongo["david"]
username = "david"
password = "123456"
db.authenticate(username, password)
# 新建一个数据库
orders = db["david"]["orders"]
# document = {
# # "_id": ObjectId(),
# # "_id": 1,
# "name": "xiaozhao",
# "number": "00000001",
# }
# ret = orders.insert_one(document)
# 查看数据库列表[只会列出有文档数据的数据库]
print(mongo.list_database_names())
# print(db["david"].list_indexes()) # 查看集合的索引
# print(db.list_collection_names()) # 查看所有库下的所有集合
# print(mongo["david"])
(2)新建数据库
(3)成功
(6)查看所有库下的所有集合
(7)成功
6.PyMongo 操作 MongoDB (集合管理)
# -*- coding: utf-8 -*-
import pymongo
# from bson import ObjectId
if __name__ == '__main__':
#有密码连接mongoDB
mongo = pymongo.MongoClient('mongodb://127.0.0.1:27017')
db = mongo["david"]
username = "david"
password = "123456"
db.authenticate(username, password)
# 查看数据库列表[只会列出有文档数据的数据库]
print(mongo.list_database_names())
# 查看指定数据的集合列表[只会列出有文档数据的集合]
print( db.list_collection_names() )
# 获取指定名称对应的集合操作对象
user_list = db["orders"]
#给集合添加数据
document = {
"name": "xiaoli",
"password": "123456"
}
user_list.insert_one(document)
# 删除集合
db["david.orders"].drop()
# 查看指定数据的集合列表[只会列出有文档数据的集合]
print( db.list_collection_names() )
② 成功
④ 删除
7.PyMongo 操作 MongoDB (文档管理)
(1)添加文档
# -*- coding: utf-8 -*-
import pymongo
# from bson import ObjectId
if __name__ == '__main__':
#有密码连接mongoDB
mongo = pymongo.MongoClient('mongodb://127.0.0.1:27017')
db = mongo["david"]
username = "david"
password = "123456"
db.authenticate(username, password)
#切换数据集
user_list = db["user_list"]
# # 添加一个文档
# document = {"name": "xiaoming", "mobile": "130XXXXXXXX", "age": 16}
# ret = user_list.insert_one(document)
# print(ret.inserted_id) # 返回InsertOneResult对象
# 插入文档时,如果没有指定_id,将自动分配一个唯一的id。
# 添加多个文档
document_list = [
{"name": "xiaoqian", "mobile": "136XXXXXXXX", "age": 17},
{"name": "xiaosun", "mobile": "135XXXXXXXX", "age": 18},
{"name": "xiaowei", "mobile": "139XXXXXXXX", "age": 18},
]
ret = user_list.insert_many(document_list)
# 打印文档_id值列表:
print(ret.inserted_ids)
②成功
(2)删除文档
# -*- coding: utf-8 -*-
import pymongo
from bson import ObjectId
if __name__ == '__main__':
#有密码连接mongoDB
mongo = pymongo.MongoClient('mongodb://127.0.0.1:27017')
db = mongo["david"]
username = "david"
password = "123456"
db.authenticate(username, password)
#切换数据集
user_list = db["user_list"]
# 删除一个文档
# query1 = {"_id": ObjectId("656803f10a84aec77e378334")}
# ret1 = user_list.delete_one(query1)
# print(ret1)
# print(ret1.deleted_count)
#
# query2 = {"name": "xiaoming"}
# ret2 = user_list.delete_one(query2)
# print(ret2)
# print(ret2.deleted_count)
# 删除多个文档
query = {"name": "xiaoming"}
ret = user_list.delete_many(query)
print(ret)
print(ret.deleted_count) # 删除总数
# 可以通过删除集合的方式,达到删除所有文档的效果
# user_list.drop()
③ 已删除
④ mongosh查看
⑦ 删除多个文档
⑨ 已删除
(3)更新文档
# -*- coding: utf-8 -*-
import pymongo
from bson import ObjectId
if __name__ == '__main__':
#有密码连接mongoDB
mongo = pymongo.MongoClient('mongodb://127.0.0.1:27017')
db = mongo["david"]
username = "david"
password = "123456"
#db.authenticate(username, password)
#切换数据集
user_list = db["user_list"]
# #更新一条数据
# query = {"name": "xiaobai"}
# data = {"$set": {"age": 22}}
# ret = user_list.update_one(query, data)
# print(ret.modified_count) #修改数量
#更新所有文档
query = {"mobile": {"$regex": "^13"}}
data = {"$inc": {"age": 2}}
ret = user_list.update_many(query, data)
print(ret)
print(ret.modified_count)
②修改数据
③运行成功
④查看数据
⑤ xiaobai年龄为22岁
⑥有2人有手机号
⑧ 运行成功
(4)查询文档
# -*- coding: utf-8 -*-
import pymongo
from bson import ObjectId
if __name__ == '__main__':
#有密码连接mongoDB
mongo = pymongo.MongoClient('mongodb://127.0.0.1:27017')
db = mongo["david"]
username = "david"
password = "123456"
# db.authenticate(username, password)
#切换数据集
user_list = db["user_list"]
# 查看一个文档,返回结果就是一个字典
# ret = user_list.find_one()
# print(ret["name"])
# print(ret["child"])
# print(ret["child"]["age"])
# 统计文档数量,返回结果就是整数
# ret = user_list.count()
# print(ret)
# # 查看所有文档
# for document in user_list.find():
# print(document)
# # 投影查询,去掉id
# for document in user_list.find({},{"_id":0}):
# print(document)
# # 查看文档部分字段,find和find_one的第二个参数表示控制字段的显示隐藏,1为显示,0为隐藏
# for document in user_list.find({}, {"_id": 0, "name": 1, "mobile": 1}):
# print(document)
# # 条件查询
# query = {"age": 20}
# document_list = user_list.find(query)
# for document in document_list:
# print(document)
# # 比较运算符
# query = {"age": {"$gt": 17}}
# document_list = user_list.find(query)
# for document in document_list:
# print(document)
# query = {"age": {"$eq": 20}}
# document_list = user_list.find(query)
# for document in document_list:
# print(document)
# # 多个字段排序:
# # sort([("键1",1),("键2",-1)])
# document_list = user_list.find().sort("age")
# for document in document_list:
# print(document)
#
# # 限制查询结果数量
# document_list = user_list.find().limit(3)
# for document in document_list:
# print(document)
# # 偏移、跳过
# # skip(int)
# document_list = user_list.find().limit(3).skip(3) # 从第3篇文档开始获取3篇文档
# for document in document_list:
# print(document)
# # 自定义条件函数
# document_list = user_list.find({"$where": "this.age==20"})
# for document in document_list:
# print(document)
document_list = user_list.find({"$where": "this.age>=18"}).sort("age",-1)
for document in document_list:
print(document)
①查看一个文档
②返回结果就是一个字典
③修改
④运行结果
⑤修改
⑥ child
⑦ 修改
⑧child的age
⑨修改
⑩查看所有文档
⑪投影查询
⑫已去掉id
⑬查看文档部分字段
⑭条件查询
⑮条件查询2
⑰多个字段排序
⑱限制查询结果数量
⑲偏移、跳过
⑳偏移、跳过2
三、问题
1.pip安装报错
(1)报错
(2)原因分析
修改下载源
pip install pymongo -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
2.PyCharm如何添加MongoDB插件
(3)测试成功
原文地址:https://blog.csdn.net/cronaldo91/article/details/134714149
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_17789.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!