python使用mongoDB

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)

python使用mongoDB_第1张图片

我们也可以自己指定 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 },)

python使用mongoDB_第2张图片

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)

python使用mongoDB_第3张图片

我们可以使用 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}})

python使用mongoDB_第4张图片

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})

python使用mongoDB_第5张图片

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

你可能感兴趣的:(sql,python,mongodb,数据库,python)