MongoDB快速入门

目录

[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 } }
)

上述操作会将 nameJohn 的文档的 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 }
         }
     }
 ])
相关推荐
小张-森林人1 小时前
Oracle 字符串分割革命:正则表达式与 Lateral Join 的优雅解法
数据库·oracle·正则表达式
m0_748250933 小时前
SQL Server Management Studio的使用
数据库·oracle·性能优化
车载诊断技术3 小时前
人工智能AI在汽车设计领域的应用探索
数据库·人工智能·网络协议·架构·汽车·是诊断功能配置的核心
没有十八岁3 小时前
云创智城YunCharge 新能源二轮、四轮充电解决方案(云快充、万马爱充、中电联、OCPP1.6J等多个私有单车、汽车充电协议)之新能源充电行业系统说明书
java·数据库·spring·汽车
爱搞技术的猫猫4 小时前
微店商品详情API接口实战指南:从零实现商品数据自动化获取
大数据·linux·运维·数据库·自动化
若云止水5 小时前
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_init_cycle 函数 - 详解(1)
数据库·nginx·ubuntu
WannaRunning7 小时前
MySQL中的共享锁和排他锁
数据库·mysql
lusklusklusk7 小时前
Sqlserver安全篇之_启用TLS即配置SQL Server 数据库引擎以加密连接
数据库·安全·sqlserver
zyplayer-doc7 小时前
MySQL实现文档全文搜索,分词匹配多段落重排展示,知识库搜索原理分享
数据库·mysql
leegong231117 小时前
Oracle 认证为有哪几个技术方向
数据库·oracle