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)
注意,不能像下面这样写,会报错:
#除了_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])
上一篇: Redis数据库操作
下一篇: 大数据之直播平台数据统计