0
点赞
收藏
分享

微信扫一扫

使用pymongo管理MongoDB

small_Sun 2022-01-05 阅读 50
from pymongo import MongoClient
import pymongo
import datetime
## 连接本地 MongoDB
client = MongoClient("mongodb://localhost:27017/") #本地库参数可省缺
## 数据库名
client.list_database_names()
['admin', 'config', 'local', 'study']
## 集合(表)名
client.study.list_collection_names()
['mongo_study_sites']
## 创建数据库、集合(插入数据即创建,是无法创建空库空集合的)
docs = {'num': 1,
       'desc': '菜鸟教程:MongoDB教程',
       'url': 'https://www.runoob.com/mongodb/mongodb-tutorial.html'}
client.study.mongo_study_sites.insert_one(docs)

for i in client.study.mongo_study_sites.find():
    print(i)
{'_id': ObjectId('61d5b4bb33a4e17ffffe25de'), 'num': 1, 'desc': '菜鸟教程:MongoDB教程', 'url': 'https://www.runoob.com/mongodb/mongodb-tutorial.html'}
## 同时插入多条数据
docs_list = [{'num': 1,
              'desc': 'MongoDB菜鸟教程',
              'url': 'https://www.runoob.com/mongodb/mongodb-tutorial.html'},
             {'num': 2,
              'desc': 'PyMongo官方教程',
              'url': 'https://pymongo.readthedocs.io/en/stable/index.html',
              'date': datetime.datetime(2022, 1, 5, 23, 8)},
             {'num': 3,
              'desc': 'PyMongo菜鸟教程',
              'url': 'https://www.runoob.com/python3/python-mongodb.html'}
            ]
client.study.mongo_study_sites.insert_many(docs_list)

for i in client.study.mongo_study_sites.find():
    print(i)
{'_id': ObjectId('61d5b4bb33a4e17ffffe25de'), 'num': 1, 'desc': '菜鸟教程:MongoDB教程', 'url': 'https://www.runoob.com/mongodb/mongodb-tutorial.html'}
{'_id': ObjectId('61d5b4ec33a4e17ffffe25df'), 'num': 1, 'desc': 'MongoDB菜鸟教程', 'url': 'https://www.runoob.com/mongodb/mongodb-tutorial.html'}
{'_id': ObjectId('61d5b4ec33a4e17ffffe25e0'), 'num': 2, 'desc': 'PyMongo官方教程', 'url': 'https://pymongo.readthedocs.io/en/stable/index.html', 'date': datetime.datetime(2022, 1, 5, 23, 8)}
{'_id': ObjectId('61d5b4ec33a4e17ffffe25e1'), 'num': 3, 'desc': 'PyMongo菜鸟教程', 'url': 'https://www.runoob.com/python3/python-mongodb.html'}
## 删除数据
client.study.mongo_study_sites.delete_many({'desc': '菜鸟教程:MongoDB教程'})

for i in client.study.mongo_study_sites.find():
    print(i)
{'_id': ObjectId('61d5b4ec33a4e17ffffe25df'), 'num': 1, 'desc': 'MongoDB菜鸟教程', 'url': 'https://www.runoob.com/mongodb/mongodb-tutorial.html'}
{'_id': ObjectId('61d5b4ec33a4e17ffffe25e0'), 'num': 2, 'desc': 'PyMongo官方教程', 'url': 'https://pymongo.readthedocs.io/en/stable/index.html', 'date': datetime.datetime(2022, 1, 5, 23, 8)}
{'_id': ObjectId('61d5b4ec33a4e17ffffe25e1'), 'num': 3, 'desc': 'PyMongo菜鸟教程', 'url': 'https://www.runoob.com/python3/python-mongodb.html'}
## 查询全部find()、查询一条find_one()
for i in client.study.mongo_study_sites.find({}, {'_id':0, 'desc':1, 'url':1}):  # 指定查询字段
    print(i)
    
print('= ' * 50)

for i in client['study']['mongo_study_sites'].find_one():
    print(i)
{'desc': 'MongoDB菜鸟教程', 'url': 'https://www.runoob.com/mongodb/mongodb-tutorial.html'}
{'desc': 'PyMongo官方教程', 'url': 'https://pymongo.readthedocs.io/en/stable/index.html'}
{'desc': 'PyMongo菜鸟教程', 'url': 'https://www.runoob.com/python3/python-mongodb.html'}
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
_id
num
desc
url
## 计数
client['study']['mongo_study_sites'].count_documents({})
3
## 创建索引
client['study']['mongo_study_sites'].create_index([('desc', pymongo.ASCENDING)], unique=True) # 唯一索引,可防止重复数据

# 查看索引信息
print(list(client['study']['mongo_study_sites'].index_information()))  #'_id'是默认的索引

# 尝试插入一条重复数据
doc = {'desc': 'MongoDB菜鸟教程'}
try:
    client['study']['mongo_study_sites'].insert_one(doc)
except Exception as e:
    print(str(e))
['_id_', 'desc_1']
E11000 duplicate key error collection: study.mongo_study_sites index: desc_1 dup key: { desc: "MongoDB菜鸟教程" }, full error: {'index': 0, 'code': 11000, 'keyPattern': {'desc': 1}, 'keyValue': {'desc': 'MongoDB菜鸟教程'}, 'errmsg': 'E11000 duplicate key error collection: study.mongo_study_sites index: desc_1 dup key: { desc: "MongoDB菜鸟教程" }'}

## 逻辑运算:$and、$or、$in、$nin、$nor
## 比较运算:
list(client.study.mongo_study_sites.find_one({}))
['_id', 'num', 'desc', 'url']




举报

相关推荐

0 条评论