python使用mongoDB

3 篇文章 0 订阅

1.安装pymongo

python连接mongo需要安装必要包pymongo:

conda install pymongo
pip install pymongo

2.连接数据库

import pymongo

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

可以获取到mongo中的所有数据库名字,说明成功连接mongo:

image-20220814214328160

3.创建一个数据库

mydb = myclient["database_name"]

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

4.创建一个集合

mydb = myclient["database_name"]
mycol = mydb["one"]

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

5.插入文档

集合中插入文档使用 insert_one() 方法,该方法的第一参数是字典 name => value 对。insert_one() 方法返回 InsertOneResult 对象,该对象包含 inserted_id 属性,它是插入文档的 id 值。如果我们在插入文档时没有指定 _id,MongoDB 会为每个文档添加一个唯一的 id

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]
x = mycol.insert_one({
    'name': 'Jenny',
    'age': 33})
print(x)
print(x.inserted_id)

image-20220814223417452

image-20220814223436992

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

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]

mylist = [
  { "name": "Tim", 'age': 13 },
  { "name": "Kai", 'age': 24},
  { "name": "Steven", 'age': 31},
]

x = mycol.insert_many(mylist)

image-20220814223822970

我们也可以自己指定 id插入:

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]

x = mycol.insert_one({"_id": 1, "name": "Kis", 'age': 29 },)

image-20220814224053459

6.查询文档

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

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]

print(mycol.find())
for i in mycol.find():
    print(i)

image-20220814224614913

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

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]

print(mycol.find_one({'name': 'Jenny'}))

image-20220814224808118

获取一条数据的具体属性,后边加上['name']

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]

print(mycol.find_one({'name': 'Jenny'})['name'])

image-20220814225000665

返回指定条数记录

如果我们要对查询结果设置指定条数的记录可以使用 limit() 方法,该方法只接受一个数字参数。

返回 2条文档记录:

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]

for i in mycol.find().limit(2):
    print(i)

image-20220814225215042

查询的条件语句中,我们还可以使用修饰符

MongoDB中条件操作符有:

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

举个栗子:

查询年龄大于30的数据:

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]

for i in mycol.find({'age': {'$gt': 30}}):
    print(i)

image-20220814225623794

我们还可以使用正则表达式作为修饰符。

正则表达式修饰符只用于搜索字符串的字段。

以下实例用于读取 name 字段中第一个字母为 “J” 的数据,正则表达式修饰符条件为 {“$regex”: “^J”} :

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]

for i in mycol.find({'name': {"$regex": "^J"}}):
    print(i)

image-20220814225808532

7.修改文档

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

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

举个栗子,把Jenny年龄改为13:

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]

mycol.update_one({'name': "Jenny"}, {'$set': {'age': 13}})

image-20220815085546556

update_many() 方法修改文档中的记录。该方法第一个参数为查询的条件,第二个参数为要修改的字段。

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

8. 删除数据

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

举个栗子,删除所有13岁的数据:

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["py_db"]
mycol = mydb["one"]

mycol.delete_many({'age': 13})

image-20220815090104488

delete_many() 方法如果传入的是一个空的查询对象,则会删除集合中的所有文档

9.删除集合

使用 drop() 方法来删除一个集合。

mycol_name.drop()//mycol_name为要删除的集合名字。

10.排序

sort() 方法可以指定升序或降序排序。

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

mydoc = mycol.find().sort("age") 
for x in mydoc:  
    print(x)

image-20220815090632813

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

<编程路上>

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值