一、MongoDB简介
MongoDB是一种基于文档的数据库,在数据存储方面与传统的基于关系的数据库有所不同。其主要优点包括扩展性强、易于水平扩展、支持非结构化数据等特点。同时,MongoDB 支持多种编程语言,如Python、Java等。MongoDB 是开源的,可在官方网站下载安装包进行安装使用。
二、MongoDB的基本操作
1. 连接 MongoDB 数据库
可以使用官方提供的 Python 驱动 pymongo,连接 MongoDB 数据库:
import pymongo client = pymongo.MongoClient(host='localhost', port=27017) db = client.test collection = db.students
2. 插入数据
可以使用 collection 的 insert() 方法插入一条数据:
student = { 'id': '20210001', 'name': 'Tom', 'age': 20, 'gender': 'male' } result = collection.insert_one(student) print(result)
3. 查询数据
可以使用 find() 方法查询数据:
result = collection.find_one({'name': 'Tom'}) print(result)
4. 更新数据
可以使用 update_one() 方法更新一条数据:
condition = {'name': 'Tom'} student = collection.find_one(condition) student['age'] = 21 result = collection.update_one(condition, {'$set': student}) print(result)
5. 删除数据
可以使用 delete_one() 方法删除一条数据:
condition = {'name': 'Tom'} result = collection.delete_one(condition) print(result)
三、数据模型与查询
1. MongoDB 数据模型
MongoDB 的数据模型是基于文档的存储模型,也就是说,我们可以在一个文档中存储多个字段。MongoDB 的文档是 BSON 格式的,BSON 是一种二进制形式的 JSON,其支持的数据类型包括数字、字符串、日期、对象等。下面是一个 MongoDB 文档的示例:
{ "name": "Tom", "age": 20, "address": { "city": "Shanghai", "street": "Pudong" }, "scores": [85, 90, 95] }
2. MongoDB 查询
MongoDB 的查询语句支持多种操作符,如 $lt(小于)、$gt(大于)、$lte(小于等于)、$gte(大于等于)、$ne(不等于)等。下面是一个查询示例:
result = collection.find({'age': {'$gt': 18}}) for res in result: print(res)
四、MongoDB高级应用
1. MongoDB索引
可以使用 create_index() 方法创建索引:
result = collection.create_index([('name', pymongo.ASCENDING)], unique=True)
2. MongoDB 聚合
MongoDB 支持聚合操作,可以使用 aggregate() 方法进行聚合操作:
result = collection.aggregate([ {'$match': {'gender': 'male'}}, {'$group': {'_id': '$age', 'count': {'$sum': 1}}} ]) for res in result: print(res)
3. MongoDB GridFS
MongoDB GridFS 是一种用于存储大文件的机制,它允许我们将文件分块存储在 MongoDB 中,并提供了相应的接口进行读取和写入。下面是一个 GridFS 的示例:
from gridfs import GridFS fs = GridFS(db, collection='test') with open('test.jpg', 'rb') as f: file_id = fs.put(f.read(), filename='test.jpg') print(file_id)
五、总结
本文主要介绍了 MongoDB 的基本操作、数据模型和高级应用,包括索引、聚合和 GridFS 等。希望能对初学 MongoDB 的小伙伴们提供一些帮助。