(二十三)Python MongoDB学习

安装驱动

pip install pymongo

添加数据

import pymongo

myClient = pymongo.MongoClient("mongodb://localhost:27017/")
dbList = myClient.list_database_names()
print(dbList)
if 'school' in dbList:
    print('数据库已存在')

# 创建一个数据库
myDb = myClient['school']
# 创建一个集合
myCol = myDb['sites']

colList = myDb.list_collection_names()
if 'sites' in colList:
    print('集合已存在')

# 插入集合

myDict = {"name": "Google", "alexa": "1", "url": "https://www.google.com"}
# insert_one() 方法返回 InsertOneResult 对象,该对象包含 inserted_id 属性,它是插入文档的 id 值
# 插入文档时没有指定 _id,MongoDB 会为每个文档添加一个唯一的 id。
x = myCol.insert_one(myDict)
print(x)
print(x.inserted_id)
myList = [
  {"name": "TaoBao", "alexa": "100", "url": "https://www.taobao.com"},
  {"name": "QQ", "alexa": "101", "url": "https://www.qq.com"},
  {"name": "Facebook", "alexa": "10", "url": "https://www.facebook.com"},
  {"name": "知乎", "alexa": "103", "url": "https://www.zhihu.com"},
  {"name": "Github", "alexa": "109", "url": "https://www.github.com"}
]
# 集合中插入多个文档使用 insert_many() 方法,该方法的第一参数是字典列表。
x = myCol.insert_many(myList)
# 输出插入的所有文档对应的 _id 值
print(x.inserted_ids)
# 指定id插入
myList = [
    {"_id": 1, "name": "RUNOOB", "cn_name": "菜鸟教程"},
    {"_id": 2, "name": "Google", "address": "Google 搜索"},
    {"_id": 3, "name": "Facebook", "address": "脸书"},
    {"_id": 4, "name": "Taobao", "address": "淘宝"},
    {"_id": 5, "name": "Zhihu", "address": "知乎"}
]
x = myCol.insert_many(myList)
print(x.inserted_ids)

MongoDB命令行使用

# 删除当前数据库
db.dropDatabase()
# 切换数据库
use school
# 查看指定数据库的集合的数据
db.sites.find()
# 查看当前数据库
db
# 查看集合
show tables

查询数据

import pymongo

myClient = pymongo.MongoClient("mongodb://localhost:27017/")
myDb = myClient['school']
myCol = myDb['sites']

# 查询集合中的一条数据
x = myCol.find_one()
print(x)
print('*' * 100)
# 查询所有数据find
for x in myCol.find():
    print(x)
print('*'*100)
# 查询指定字段的数据
for x in myCol.find({}, {"_id": 0, "name": 1, "alexa": 1}):
    print(x)
print('*'*100)
for x in myCol.find({}, {"url": 1}):
    print(x)
print('*' * 100)
# 指定条件查询
myQuery = {"name": "RUNOOB"}
myDoc = myCol.find(myQuery)
for x in myDoc:
    print(x)
print('*' * 100)
# 高级查询 name第一个字母大于H
myQuery = {"name": {"$gt": "H"}}
myDoc = myCol.find(myQuery)
for x in myDoc:
    print(x)
print('*' * 100)
# 返回指定条数记录
myResult = myCol.find().limit(3)
for x in myResult:
    print(x)
print('*' * 100)

修改数据

import pymongo

myClient = pymongo.MongoClient("mongodb://localhost:27017/")
myDb = myClient['school']
myCol = myDb['sites']

myQuery = {"alexa": "100"}
newValues = {"$set": {"alexa": "12345"}}
# update_one() 方法只能修匹配到的第一条记录,如果要修改所有匹配到的记录,可以使用 update_many()
myCol.update_one(myQuery, newValues)

for x in myCol.find():
    print(x)
print('*'*100)

# 查找F开头的name将alexa改为6666
myQuery = {"name": {"$regex": "F"}}
newValues = {"$set": {"alexa": "6666"}}
myCol.update_many(myQuery, newValues)

for x in myCol.find():
    print(x)
print('*'*100)

数据排序

import pymongo

myClient = pymongo.MongoClient("mongodb://localhost:27017/")
myDb = myClient['school']
myCol = myDb['sites']

# 升序排序
myDoc = myCol.find().sort("alexa")

for x in myDoc:
    print(x)

print('*'*100)
myDoc = myCol.find().sort("alexa", -1)
for x in myDoc:
    print(x)
print('*'*100)

数据删除

import pymongo

myClient = pymongo.MongoClient("mongodb://localhost:27017/")
myDb = myClient['school']
myCol = myDb['sites']

myQuery = {"name": "TaoBao"}
# 删除一个文档
myCol.delete_one(myQuery)
# 删除后输出
for x in myCol.find():
    print(x)

# 删除多个文档
myQuery = {"name": {"$regex": "F"}}
x = myCol.delete_many(myQuery)
print(x.deleted_count)

# 删除所有文档
x = myCol.delete_many({})
print(x.deleted_count, "个文档已删除")
# 删除集合
myCol.drop()

发布了77 篇原创文章 · 获赞 33 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_39337886/article/details/103399190