MongoDB 是一个开源的、面向文档的 NoSQL 数据库管理系统,与传统的关系型数据库(如 MySQL)不同,MongoDB 存储数据的方式更加灵活,不需要固定的表结构和模式。
MongoDB 使用 BSON(二进制 JSON) 格式存储数据,数据以文档的形式组织。每个文档类似于 JSON 对象,可以包含键值对、数组、嵌套文档等多种结构。
MongoDB 不要求事先定义固定的模式,可以根据需求自由地添加、修改文档中的字段,而不需要像传统关系数据库那样修改表结构。
MongoDB 通过 分片 和 副本集 实现高性能和高可用性。分片可以将数据分布到多个服务器上,从而实现水平扩展,应对大规模数据和高并发访问。副本集则通过数据的多副本存储,提供数据冗余和故障转移能力。
MongoDB 支持丰富的查询语言,可以执行 CRUD(增、删、查、改)操作,同时也支持复杂的聚合操作(如分组、排序、过滤等)。
数据库(Database):是 MongoDB 中的容器,类似于关系数据库中的数据库。
集合(Collection):一个数据库中可以有多个集合,类似于关系数据库中的表。集合中的文档可以有不同的结构。
文档(Document):集合中的每个数据项,类似于关系数据库中的行。每个文档由字段和值组成,通常是 JSON 格式。
字段(Field):文档中的键值对,类似于关系数据库中的列。
查看所有数据库:show databases
创建/切换数据库:use database_name
删除数据库:db.dropDatabase()
查看当前数据库中的所有集合:show collections
创建集合:db.createCollection('collection_name')
删除集合:db.collection_name.drop()
单个文档插入:db.collection_name.insertOne({ name: "John", age: 30 })
多个文档插入:db.collection_name.insertMany([{ name: "Alice", age: 25 }, { name: "Bob", age: 27 }])
查询所有文档:db.collection_name.find()
条件查询(例如查询年龄大于25的文档):db.collection_name.find({ age: { $gt: 25 } })
使用多个条件查询(例如查询年龄大于25且名字是 "Alice" 的文档):db.collection_name.find({ age: { $gt: 25 }, name: "Alice" })
更新单个文档:db.collection_name.updateOne({ name: "John" }, // 查询条件 { $set: { age: 31 } } // 更新操作)
更新多个文档:db.collection_name.updateMany({ age: { $lt: 30 } }, // 查询条件
{ $set: { status: "young" } } // 更新操作)
删除单个文档:db.collection_name.deleteOne({ name: "John" })
删除多个文档:db.collection_name.deleteMany({ age: { $lt: 30 } })
$gt: 大于
$lt: 小于
$gte: 大于等于
$lte: 小于等于
$ne: 不等于
$in: 在某些值范围内
$and: 与操作
$or: 或操作