前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python】MongoDB数据库安装和Pymongo操作学习

【Python】MongoDB数据库安装和Pymongo操作学习

作者头像
zstar
发布2023-03-19 14:32:57
1.2K0
发布2023-03-19 14:32:57
举报
文章被收录于专栏:往期博文

MongoDB简介

Mongo是一种非关系型数据库,相较于典型的关系型数据库(如Oracle,Mysql),访问速度更快,更适合于数据变化快的场景。

MongoDB数据库安装

这里使用的是MongoDB 4.4 版本: 下载链接:https://pan.baidu.com/s/14-acXNSbxS5vxAd3oPTK0g?pwd=8888

安装步骤图示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安装好之后,会自动添加windows服务,可以在任务管理器的服务栏看到。

在这里插入图片描述
在这里插入图片描述

打开浏览器,访问http://localhost:27017/,显示下图内容,说明MongoDB服务正常运行。

在这里插入图片描述
在这里插入图片描述

Pymongo常规操作

Pymongo安装

Pymongo是一个python库,提供了方便的与MongoDB交互的API。 Pymongo安装:

代码语言:javascript
复制
pip install pymongo

创建数据库

代码语言:javascript
复制
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

#新建数据库
mydb = myclient["mydatabase"]

查询所有数据库

代码语言:javascript
复制
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

# 查询数据库
dblist = myclient.list_database_names()  # 获取数据库名
print(dblist)

输出:

[‘admin’, ‘config’, ‘local’]

这里输出了三个原始默认的数据库,并没有刚刚新建的数据库mydatabase。 这是因为在 MongoDB 中,数据库创建后要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。

创建集合/插入文档

下面就创建一个集合并插入一条文档:

代码语言:javascript
复制
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

# 新建数据库
mydb = myclient["mydatabase"]
# 创建集合
mycol = mydb["myset"]
# 插入文档
mydict = {"name": "zstar", "height": "185cm"}
mycol.insert_one(mydict)

运行之后,使用Navicat查看数据库,可以看到数据库和集合被成功创建,并自动为文档添加了唯一性标识。

在这里插入图片描述
在这里插入图片描述

插入多条文档

使用insert_many可以插入多条文档:

代码语言:javascript
复制
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

# 新建数据库
mydb = myclient["mydatabase"]
# 创建集合
mycol = mydb["myset"]

# 插入多条文档
mylist = [
  {"name": "zstar", "height": "185cm"},
  {"name": "zstar", "height": "186cm"},
  {"name": "zstar", "height": "188cm"}
]
mycol.insert_many(mylist)

查询一条文档

代码语言:javascript
复制
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

# 新建数据库
mydb = myclient["mydatabase"]
# 创建集合
mycol = mydb["myset"]

# 查询一条文档
x = mycol.find_one()
print(x)

查询集合中所有文档

mycol.find()会返回一个pymongo.cursor.Cursor对象,通过循环可以读取:

代码语言:javascript
复制
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

# 新建数据库
mydb = myclient["mydatabase"]
# 创建集合
mycol = mydb["myset"]

# 查询所有文档
for x in mycol.find():
    print(x)

查询指定字段

将需要的字段设为1,不需要的字段设为0,第一个{}指代查询所有内容。

代码语言:javascript
复制
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

# 新建数据库
mydb = myclient["mydatabase"]
# 创建集合
mycol = mydb["myset"]

# 查询指定字段
for x in mycol.find({}, {"_id": 0, "name": 1, "height": 1}):
    print(x)

查询符合条件的数据

查询所有"height": “185cm”`的数据:

代码语言:javascript
复制
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

# 新建数据库
mydb = myclient["mydatabase"]
# 创建集合
mycol = mydb["myset"]

# 条件查询
for x in mycol.find({"height": "185cm"}):
    print(x)

比较条件查询

除了完全相等之外,还可以使用条件操作符来实现更多操作,例如: 查询身高大于185cm的人:

代码语言:javascript
复制
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

# 新建数据库
mydb = myclient["mydatabase"]
# 创建集合
mycol = mydb["myset"]

# 条件查询
for x in mycol.find({"height": {"$gt": "185cm"}}):
    print(x)

常用条件操作符有:

  • (>) 大于 - $gt
  • (<) 小于 - $lt
  • (>=) 大于等于 - $gte
  • (<= ) 小于等于 - $lte

此外,还可以用"$regex"来进行正则表达式查询,这里数据较简单,暂略。

返回指定条数文档

通过limit()方式,可以限定返回的文档条数。

代码语言:javascript
复制
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

# 新建数据库
mydb = myclient["mydatabase"]
# 创建集合
mycol = mydb["myset"]

# 返回指定条数
myresult = mycol.find().limit(3)  # 查询前三条数据
# 输出结果
for x in myresult:
    print(x)

修改一条文档

使用update_one可以修改一条文档,如果满足修改条件的有多条文档,只会修改第一个。

代码语言:javascript
复制
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

# 新建数据库
mydb = myclient["mydatabase"]
# 创建集合
mycol = mydb["myset"]

# 修改一条文档
myquery = {"name": "zstar"}  # 将zstar修改为starz
newvalues = {"$set": {"name": "starz"}}
mycol.update_one(myquery, newvalues)
# 输出修改后的集合
for x in mycol.find():
    print(x)

修改多条文档

上面代码不变,将update_one替换成update_many,即可实现修改所有符合条件的文档。

代码语言:javascript
复制
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

# 新建数据库
mydb = myclient["mydatabase"]
# 创建集合
mycol = mydb["myset"]

# 修改多条文档
myquery = {"name": "zstar"}  # 将所有的zstar修改为starz
newvalues = {"$set": {"name": "starz"}}
mycol.update_many(myquery, newvalues)
# 输出修改后的集合
for x in mycol.find():
    print(x)

文档排序

使用sort可以对查询的文档进行排序,默认是升序,设置参数-1为降序。

代码语言:javascript
复制
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

# 新建数据库
mydb = myclient["mydatabase"]
# 创建集合
mycol = mydb["myset"]

# 排序
mydoc = mycol.find().sort("height")  # 升序
mydoc = mycol.find().sort("height", -1)  # 降序
for x in mydoc:
    print(x)

删除单条文档

delete_one用来删除单个符合条件的文档。

代码语言:javascript
复制
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

# 新建数据库
mydb = myclient["mydatabase"]
# 创建集合
mycol = mydb["myset"]

# 删除一条文档
myquery = {"height": "188cm"}
mycol.delete_one(myquery)
# 删除后输出
for x in mycol.find():
    print(x)

删除多条文档

和update类似,用delete_many替代delete_one即可:

代码语言:javascript
复制
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

# 新建数据库
mydb = myclient["mydatabase"]
# 创建集合
mycol = mydb["myset"]

# 删除一条文档
myquery = {"height": "185cm"}
mycol.delete_many(myquery)
# 删除后输出
for x in mycol.find():
    print(x)

删除所有文档

将匹配条件设为空,则会删除所有文档:

代码语言:javascript
复制
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

# 新建数据库
mydb = myclient["mydatabase"]
# 创建集合
mycol = mydb["myset"]

# 删除一条文档
myquery = {}
mycol.delete_many(myquery)
# 删除后输出
for x in mycol.find():
    print(x)

删除集合

文档删完了,集合也删了吧。

代码语言:javascript
复制
import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")

# 新建数据库
mydb = myclient["mydatabase"]
# 创建集合
mycol = mydb["myset"]
# 删除集合
mycol.drop()

总结

相比于之前经常使用的Mysql,MongoDB的操作显得更简单和轻量化,更适合对于安全性低,使用频繁的场景。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MongoDB简介
  • MongoDB数据库安装
  • Pymongo常规操作
    • Pymongo安装
      • 创建数据库
        • 查询所有数据库
          • 创建集合/插入文档
            • 插入多条文档
              • 查询一条文档
                • 查询集合中所有文档
                  • 查询指定字段
                    • 查询符合条件的数据
                      • 比较条件查询
                        • 返回指定条数文档
                          • 修改一条文档
                            • 修改多条文档
                              • 文档排序
                                • 删除单条文档
                                  • 删除多条文档
                                    • 删除所有文档
                                      • 删除集合
                                      • 总结
                                      相关产品与服务
                                      云数据库 MySQL
                                      腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                                      领券
                                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档