PyMongo的一些简单使用

以下学习笔记参考自:
https://github.com/datawhalechina/fun-rec/blob/master/docs/%E7%AC%AC%E4%BA%8C%E7%AB%A0%20%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F%E5%AE%9E%E6%88%98/2.2%E6%96%B0%E9%97%BB%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F%E5%AE%9E%E6%88%98/docs/2.2.1.2%20MongoDB%E5%9F%BA%E7%A1%80.md

PyMongo安装

pip install pymongo

创建数据库,集合以及插入文档

注:在 MongoDB 中,数据库只有在内容插入后才会创建! 就是说,数据库创建后要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。

import pymongo
 
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
#切换到数据库tobytest,没有则创建
mydb = myclient["tobytest"]
#到集合col_set,没有则创建
mycol = mydb["col_set"]

collist=mydb.list_collection_names()
#此处打印的集合名中不包含col_set,因为并未插入文档
print(collist)
 
mydict = { "name": "Toby", "age": "23", "url": "https://juejin.cn/user/3403743731649863" }
 
#集合中插入文档使用 insert_one() 方法,该方法的第一参数是字典 name => value 对。 
x = mycol.insert_one(mydict) 
print(x)

collist=mydb.list_collection_names()
print(collist)

请添加图片描述
请添加图片描述

插入多个文档

集合中插入多个文档使用 insert_many() 方法,该方法的第一参数是字典列表。

import pymongo
 
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["tobytest"]
mycol = mydb["col_set"]
 
mylist = [
  { "name": "Tom", "age": "100", "url": "https://juejin.cn/user/3403743731649863" },
  { "name": "Mary", "age": "101", "url": "https://juejin.cn/user/3403743731649863" },
  { "name": "Timi", "age": "10", "url": "https://juejin.cn/user/3403743731649863" },
]
 
x = mycol.insert_many(mylist)
 
# 输出插入的所有文档对应的 _id 值
print(x.inserted_ids)

请添加图片描述

Python Mongodb 查询文档

MongoDB 中使用了 find 和 find_one 方法来查询集合中的数据,类似于 SQL 中的 SELECT 语句。

查询一条数据

我们可以使用 find_one() 方法来查询集合中的一条数据。

import pymongo
 
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["tobytest"]
mycol = mydb["col_set"]
 
x = mycol.find_one()
 
print(x)

请添加图片描述

查询集合中所有数据

find() 方法可以查询集合中的所有数据,类似 SQL 中的 SELECT * 操作。

import pymongo
 
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["tobytest"]
mycol = mydb["col_set"]
  
for x in mycol.find():
  print(x)

请添加图片描述

查询指定字段的数据

我们可以使用 find() 方法来查询指定字段的数据,将要返回的字段对应值设置为 1。

import pymongo
 
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["tobytest"]
mycol = mydb["col_set"]
  
for x in mycol.find({},{ "_id": 0, "name": 1, "age": 1 }):
  print(x)

请添加图片描述

根据指定条件查询

我们可以在 find() 中设置参数来过滤数据。

以下实例查找 name 字段为 “Toby” 的数据:

import pymongo
 
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["tobytest"]
mycol = mydb["col_set"]
  
myquery = { "name": "Toby" }
 
mydoc = mycol.find(myquery)
 
for x in mydoc:
  print(x)

请添加图片描述

返回指定条数记录

import pymongo
 
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["tobytest"]
mycol = mydb["col_set"]

#此处返回2条文档记录
myresult = mycol.find().limit(2)
 
# 输出结果
for x in myresult:
  print(x)

请添加图片描述

Python Mongodb 修改文档

我们可以在 MongoDB 中使用 update_one() 方法修改文档中的记录。该方法第一个参数为查询的条件,第二个参数为要修改的字段。

如果查找到的匹配数据多于一条,则只会修改第一条。

以下实例将 age字段的值 23改为 12345:

import pymongo
 
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["tobytest"]
mycol = mydb["col_set"]
  
myquery = { "age": "23" }
newvalues = { "$set": { "age": "12345" } }
 
mycol.update_one(myquery, newvalues)
 
# 输出修改后的  "sites"  集合
for x in mycol.find():
  print(x)

请添加图片描述

排序

sort() 方法第一个参数为要排序的字段,第二个字段指定排序规则,1 为升序,-1 为降序,默认为升序。

import pymongo
 
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["tobytest"]
mycol = mydb["col_set"]

#默认升序排序  
mydoc = mycol.find().sort("age")
for x in mydoc:
  print(x)

请添加图片描述

import pymongo
 
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["pydb"]
mycol = mydb["col_set"]

#对字段 age按降序排序
mydoc = mycol.find().sort("age", -1)
 
for x in mydoc:
  print(x)

请添加图片描述

Python Mongodb 删除数据

可以使用 delete_one() 方法来删除一个文档,该方法第一个参数为查询对象,指定要删除哪些数据。

import pymongo
 
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["tobytest"]
mycol = mydb["col_set"]
  
myquery = { "name": "Timi" }
 
mycol.delete_one(myquery)
 
# 删除后输出
for x in mycol.find():
  print(x)

请添加图片描述
删除集合中的所有文档
delete_many()方法如果传入的是一个空的查询对象,则会删除集合中的所有文档:

import pymongo
 
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["tobytest"]
mycol = mydb["col_set"]
  
x = mycol.delete_many({})
for x in mycol.find():
  print(x)

结果无输出,因为所有文档都被删除了

删除集合

可以使用drop()方法来删除一个集合。以下实例删除了 col_set集合:

import pymongo
 
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["tobytest"]
mycol = mydb["col_set"]
  
mycol.drop()

可以看到数据库中已经没有col_set集合了
请添加图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值