欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python操作MongoDB数据库

程序员文章站 2024-03-22 12:29:34
...

本文包括Python连接MongoDB增删查改和排序

一、连接MongoDB

pip install pymongo

连接数据库,如果数据库已经存在,直接使用。若未存在,则新建一个数据库。

  • list_database_names():所有数据库名称
  • list_collection_names():所有集合(数据表)名称
import pymongo

client = pymongo.MongoClient("mongodb://localhost:27017/")  # 连接MongoDB
dblist = client.list_database_names()   #获取所有数据库名称
print(dblist)
import pymongo

client = pymongo.MongoClient("mongodb://localhost:27017/")  # 连接MongoDB
db = client.douban  # 选择数据库douban,等同于db = client['douban']
tablelist = db.list_collection_names()		#获取所有集合(数据表)名称
print(tablelist)

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

二、查询数据

1、普通查询
  • find()
import pymongo
import pandas as pd

client = pymongo.MongoClient("mongodb://localhost:27017/")  # 连接MongoDB
db = client.douban        #选择数据库douban,等同于db = client['douban']
table = db.movies    #选择数据表,等同于table = db['movies']
# x = table.find_one()      #查询第一条

#查询值为1的列,值为0表示不查询此列
x = table.find({}, {"_id": 0, 'rank': 1, 'movie': 1, 'star': 1})
# print(list(x))      #转化为list对象
results = pd.DataFrame(list(x))     #转化为pd类型

print(results)
#for x in table.find():		#一条一条遍历
#    print(x)

Python操作MongoDB数据库
注意,不能像下面这样写,会报错:

#除了_id,其他键的值同时存在1和0时会报错
x = table.find({}, {"_id": 0, 'rank': 1, 'movie': 1, 'star': 0})
2、条件查询
  • 正则查询
  • $gt:大于
  • $lt:小于
  • limit()
import pymongo

client = pymongo.MongoClient("mongodb://localhost:27017/")  # 连接MongoDB
db = client.douban        #选择数据库douban,等同于db = client['douban']
table = db.movies    #选择数据表,等同于table = db['movies']

query = {'star':'9.2'}
#query2 = {'star': {'$gt':'9.2'}}       #star大于9.2
#query3 = {'movie': {"$regex": "^肖"}}    # 正则查询,以肖开头的电影
results = table.find(query)
#results = table.find(query).limit(3)      #查询指定条数,这里是3条
print(list(results)[0])

三、插入数据

  • insert_one()
  • insert_many()
import pymongo

client = pymongo.MongoClient("mongodb://localhost:27017/")  # 连接MongoDB
db = client.douban        #选择数据库douban,等同于db = client['douban']
table = db.movies    #选择数据表,等同于table = db['movies']
# data = {'rank': '12', 'movie': '大白历险记', 'star': '8.2', 'introduce': '历险/动作'}
# table.insert_one(data) 	#插入一条
datas = [{'_id':1,'rank': '12', 'movie': '大白历险记', 'star': '8.2', 'introduce': '历险/动作'},
         {'_id': 2, 'rank': '13', 'movie': '大黑历险记','star': '8.3', 'introduce': '历险/动作'},
         {'_id': 3, 'rank': '14', 'movie': '小白历险记','star': '8.4', 'introduce': '历险/动作'}
        ]
x = table.insert_many(datas)	#插入多条
print(x.acknowledged)

四、更新数据

  • update_one()
  • update_many()
import pymongo

client = pymongo.MongoClient("mongodb://localhost:27017/")  # 连接MongoDB
db = client.douban        #选择数据库douban,等同于db = client['douban']
table = db.movies    #选择数据表,等同于table = db['movies']

# data = {'rank': '12', 'movie': '大白历险记'}
# new_data = {'$set':{'rank': '21', 'movie': '二郎历险记'}}
# table.update_one(data, new_data)    #更新一条语句

data = {'movie':{'$regex':'^大白'}}		#正则查找
new_data = {'$set': {'introduce': '喜剧/动作'}}
table.update_many(data,new_data)        #更新多条

x = table.find({'introduce': '喜剧/动作'})
print(list(x))

五、删除数据

  • delete_one()
  • delete_many()
  • drop()
import pymongo

client = pymongo.MongoClient("mongodb://localhost:27017/")  # 连接MongoDB
db = client.douban  # 选择数据库douban,等同于db = client['douban']
table = db.movies  # 选择数据表,等同于table = db['movies']

# data = {'rank': '12', 'movie': '大白历险记'}
# table.delete_one(data)  #删除一条

datas = {'movie': {'$regex': '^大白'}}
x = table.delete_many(datas)
# table.delete_many()     #delete_many()没有参数的话会把表里面所有数据都删除

print(x.deleted_count)		#统计删除了多少条数据

# table.drop()        #删除table表

六、排序数据

  • sort()
import pymongo

client = pymongo.MongoClient("mongodb://localhost:27017/")  # 连接MongoDB
db = client.douban  # 选择数据库douban,等同于db = client['douban']
table = db.movies  # 选择数据表,等同于table = db['movies']

x = table.find().sort('star',1)        #1是升序,-1是降序,默认升序
print(list(x)[0])