目录
[1 什么是MongoDB](#1 什么是MongoDB)
[1.1 MongoDB的特点](#1.1 MongoDB的特点)
[2 基本概念](#2 基本概念)
[3 安装与配置](#3 安装与配置)
[4 MongoDB操作指令](#4 MongoDB操作指令)
1 什么是MongoDB
MongoDB是一个基于分布式文件存储的开源数据库系统属于NOSQL(非关系型数据库)的范畴,它以高性能,高可扩展性和灵活的数据模型而受到广泛关注。
1.1 MongoDB的特点
1,灵活的数据模型:
采用文档型数据模型,模型以BSON(二进制的json)文档形式存储,文档的结构可以动态变化,不同文档可以有不同的字段,这使得数据的存储和处理更加灵活。
2,高性能:
支持高效的读写操作,通过内存映射文件和索引机制,能够快速处理大量数据。同时,MongoDB还支持水平扩展,可以通过分片将数据分布到多个服务器上,提高系统的处理能力。
3,高可扩展性:
易于进行水平扩展,通过添加更多的服务器节点来处理不断增加的数据量和用户需求,支持副本集,提供数据的冗余和高可用性,当主节点出现故障时,副本集可以自动选举新的主节点。
4,丰富的查询功能:
支持强大的查询语句,包括范围查询,正则表达式查询,地理空间查询,能够满足各种负责的查询需求。
2 基本概念
1,文档(Document):
MongoDB 中数据的基本存储单元,类似于关系型数据库中的一行记录。文档由键值对组成,键是字符串,值可以是各种数据类型,如字符串、数字、数组、嵌套文档等。
2,集合(Collection):
一组文档的集合,类似于关系型数据库中的表。集合中的文档可以有不同的结构,但通常具有相似的用途。
3,数据库(Database):
多个集合的容器,一个 MongoDB 实例可以包含多个数据库,每个数据库可以包含多个集合。
3 安装与配置
MongoDB 提供了不同操作系统的安装包,你可以从官方网站(Download MongoDB Community Server | MongoDB)下载适合你操作系统的版本,并按照安装向导进行安装,详细操作请查看MongoDB的安装配置教程(很详细,你想要的都在这里)_mongodb安装-CSDN博客
4 MongoDB操作指令
连接与数据库操作
1,连接到 MongoDB 服务器
在命令行中使用 mongosh
(MongoDB 6.0 及以上版本)或 mongo
(旧版本)连接到本地 MongoDB 服务器:
mongosh mongo(旧版本)
若要连接到远程服务器或指定端口,可以使用以下命令:
mongosh "mongodb://<hostname>:<port>"
例如,连接到 192.168.1.100
服务器的 27017
端口:
mongosh "mongodb://192.168.1.100:27017"
2,查看所有数据库
show dbs
3,使用或切换数据库
如果指定的数据库不存在,MongoDB 会在你第一次向其中插入数据时创建它。
use <database_name>
例如,使用名为 testdb
的数据库:
use testdb
4,删除当前使用的数据库
db.dropDatabase()
集合操作
1,查看当前数据库中的所有集合
show collections
2,创建集合
可以使用 createCollection
方法显式创建集合,也可以在插入文档时自动创建集合。
db.createCollection("users")
3,删除集合
db.<collection_name>.drop()
例如,删除 users
集合:
db.users.drop()
文档操作
1,插入文档
插入单个文档:
db.users.insertOne({
"name": "John",
"age": 30,
"email": "john@example.com"
})
插入多个文档:
db.users.insertMany([
{
"name": "Alice",
"age": 25,
"email": "alice@example.com"
},
{
"name": "Bob",
"age": 35,
"email": "bob@example.com"
}
])
2,查询文档
查询所有文档:
db.users.find()
根据条件查询文档:
db.users.find({ "age": { $gt: 25 } })
上述查询会返回 age
大于 25 的所有文档。
查询单个文档:
db.users.findOne({ "name": "John" })
3,更新文档
更新单个文档:
db.users.updateOne(
{ "name": "John" },
{ $set: { "age": 31 } }
)
上述操作会将 name
为 John
的文档的 age
字段更新为 31。
更新多个文档:
db.users.updateMany(
{ "age": { $gt: 30 } },
{ $set: { "isSenior": true } }
)
该操作会将所有 age
大于 30 的文档的 isSenior
字段设置为 true
。
4,删除文档
1,删除单个文档
db.users.deleteOne({ "name": "Bob" })
2,删除多个文档
db.users.deleteMany({ "age": { $lt: 20 } })
索引操作
1,创建索引
db.users.createIndex({ "name": 1 })
上述命令会在 users
集合的 name
字段上创建一个升序索引。
2,查看索引
db.users.getIndexes()
3,删除索引
db.users.dropIndex({ "name": 1 })
聚合操作
聚合操作可以对文档进行分组、统计等操作。以下是一个简单的聚合示例,统计每个年龄段的用户数量:
db.users.aggregate([
{
$group: {
_id: "$age",
count: { $sum: 1 }
}
}
])