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 }
         }
     }
 ])
相关推荐
松涛和鸣31 分钟前
72、IMX6ULL驱动实战:设备树(DTS/DTB)+ GPIO子系统+Platform总线
linux·服务器·arm开发·数据库·单片机
likangbinlxa1 小时前
【Oracle11g SQL详解】UPDATE 和 DELETE 操作的正确使用
数据库·sql
r i c k1 小时前
数据库系统学习笔记
数据库·笔记·学习
野犬寒鸦2 小时前
从零起步学习JVM || 第一章:类加载器与双亲委派机制模型详解
java·jvm·数据库·后端·学习
IvorySQL2 小时前
PostgreSQL 分区表的 ALTER TABLE 语句执行机制解析
数据库·postgresql·开源
·云扬·2 小时前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
IT邦德3 小时前
Oracle 26ai DataGuard 搭建(RAC到单机)
数据库·oracle
惊讶的猫3 小时前
redis分片集群
数据库·redis·缓存·分片集群·海量数据存储·高并发写
不爱缺氧i3 小时前
完全卸载MariaDB
数据库·mariadb
纤纡.3 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql