当前位置: 首页 > news >正文

Mongodb常用命令简介

#作者:Unstopabler

文章目录

  • 1、mongodb简介
  • 2、主要优势
  • 3、典型应用场景
  • 4、mongodb操作指南
    • 登陆数据库
    • 数据库操作
    • 集合(表)操作
    • 文档(记录)操作
    • 索引管理
    • 聚合查询
    • 用户与权限管理
    • 数据备份与恢复
    • 服务器管理

1、mongodb简介

MongoDB 是一款开源、跨平台的文档型 NoSQL 数据库系统,由 MongoDB Inc.开发和维护。它的设计目标是为现代应用程序提供一种灵活、高效且易于扩展的数据存储方式。
与传统的关系型数据库不同,MongoDB 以文档(Document)为基本数据存储单元,支持结构灵活的数据格式(如 JSON 或 BSON),非常适合处理非结构化或半结构化的数据。

2、主要优势

MongoDB 作为一款流行的文档型 NoSQL 数据库,具有以下主要优势,使其在现代应用开发中广受青睐:

  1. 灵活的数据模型(Schema-less)
    MongoDB 使用 BSON(Binary JSON)格式存储数据,支持动态、可变的文档结构。
    不需要预先定义表结构(schema),可以自由修改字段和嵌套结构,适合快速迭代的开发流程。
  2. 高性能读写能力
    支持内存映射文件,数据读取速度快。
    写操作可通过配置不同写关注级别(Write Concern)来平衡性能与可靠性。
    对索引的支持丰富(如单字段、复合索引、文本索引等),显著提升查询效率。
  3. 水平扩展能力强(Sharding)
    原生支持分片(Sharding),可将数据分布到多个服务器上,轻松应对 PB 级数据增长。
    分布式架构使得系统具备良好的横向扩展能力,适合大数据场景。
  4. 高可用性(Replica Set)
    支持副本集(Replica Set),自动进行故障转移(failover),确保数据的高可用。
    主从复制机制保障了数据冗余和读写分离,提升系统的稳定性和容灾能力。
  5. 丰富的查询语言
    提供强大的 CRUD 操作支持,包括条件查询、聚合操作、排序、分页等。
    支持嵌套查询、数组操作、地理位置索引等功能,满足复杂业务需求。
  6. 支持多种索引类型
    除了基本的唯一索引、稀疏索引,还支持:
    地理空间索引(用于位置服务)
    文本索引(用于全文搜索)
    TTL 索引(自动过期删除)
  7. 跨平台、多语言支持
    可运行于 Windows、Linux、macOS 等各种操作系统。
    提供官方驱动支持主流编程语言,如:Java、Python、Node.js、C#、Go、Ruby 等。
  8. 易于集成与部署
    支持与云平台深度集成(如 MongoDB Atlas、AWS、Azure、Google Cloud)。
    社区活跃,生态完善,有大量工具和框架支持(如 Mongoose、MongoDB Compass、Robo 3T 等)。
  9. 适用于非结构化/半结构化数据
    特别适合处理日志、JSON 数据、传感器数据、社交媒体内容等非结构化或变化频繁的数据类型。

3、典型应用场景

MongoDB 特别适用于以下场景:
需要快速开发和频繁变更数据结构的应用
处理大规模数据并要求高可扩展性的系统
对性能和实时查询响应有较高要求的服务
凭借其强大的水平扩展能力、丰富的查询语言以及对索引的高效支持,MongoDB 已广泛应用于大数据、云计算和实时 Web 应用等领域。

4、mongodb操作指南

登陆数据库

连接MongoDB服务器mongosh --host 127.0.0.1 --port 27017 -u admin -p password --authenticationDatabase admin
连接MongoDB服务器/data/mongodb/bin/mongosh 192.168.52.19:27017
use admin
db.auth(“admin”,“123456”)

数据库操作

在这里插入图片描述

集合(表)操作

在这里插入图片描述

文档(记录)操作

插入文档

# 插入单条文档
db.users.insertOne({name: "supinfo",age: 25,email: "supinfo@supinfo.com",tags: ["developer", "mongodb"]
});# 插入多条文档
db.users.insertMany([{ name: "supinfo", age: 10 },{ name: "hali", age: 20 }
]);

查询文档

# 查询所有文档
db.users.find();# 条件查询(age > 10)
db.users.find({ age: { $gt: 10 } });# 投影(返回指定字段)
db.users.find({}, { name: 1, age: 1 });# 排序(按 age 降序)
db.users.find().sort({ age: -1 });# 分页(跳过前 5 条,限制返回 10 条)
db.users.find().skip(5).limit(10);

更新文档

# 更新单条文档($set 修改字段)
db.users.updateOne({ name: "supinfo" },{ $set: { age: 13, status: "active" } }
);# 更新多条文档($inc 自增字段)
db.users.updateMany({ age: { $lt: 30 } },{ $inc: { age: 1 } }
);# 替换整个文档
db.users.replaceOne({ name: "supinfo" }, { name: "supinfo", role: "admin" });

删除文档

# 删除单条文档
db.users.deleteOne({ name: "supinfo" });# 删除多条文档
db.users.deleteMany({ age: { $gt: 10 } });

索引管理

创建索引

# 单字段索引
db.users.createIndex({ email: 1 });  # 1 为升序,-1 为降序# 复合索引
db.users.createIndex({ name: 1, age: -1 });# 唯一索引
db.users.createIndex({ email: 1 }, { unique: true });#文本索引
db.articles.createIndex({ content: "text" });

查看索引

db.users.getIndexes();

删除索引

db.users.dropIndex("email_1");

聚合查询

聚合查询

# 按 age 分组统计数量
db.users.aggregate([{ $group: { _id: "$age", count: { $sum: 1 } } },{ $sort: { _id: 1 } }
]);# 连接集合(类似 SQL JOIN)
db.orders.aggregate([{$lookup: {from: "users",localField: "user_id",foreignField: "_id",as: "user_info"}}
]);

用户与权限管理

在这里插入图片描述

数据备份与恢复

在这里插入图片描述

服务器管理

在这里插入图片描述

http://www.lryc.cn/news/613238.html

相关文章:

  • MongoDB学习专题(六)复制集和分片集群
  • 02电气设计-安全继电器电路设计(让电路等级达到P4的安全等级)
  • 内存泄漏系列专题分析之三十二:高通相机CamX ION/dmabuf内存管理机制CmdBuffer
  • VC6800智能相机:赋能智能制造,开启AI视觉新纪元
  • vue2+elementui select框可以选择可以回车添加新的option
  • Godot ------ 中级人物血条制作01
  • ElementUI之表格
  • Oracle 19C In-Memory 列存储技术测试
  • Renesas Electronics RA8M1语音套件(VK-RA8M1)
  • 深入解析Go设计模式:责任链模式实战
  • Electron 中 license-keys 的完整集成方案
  • 网络虚拟化是啥啊?
  • 自然语言处理×第四卷:文本特征与数据——她开始准备:每一次输入,都是为了更像你地说话
  • 拥抱云原生:从传统架构到云原生架构的演进与实践
  • python题目练习 无重叠区间
  • 京东关键字搜索商品列表接口开发实战:从参数优化到分布式调用
  • yolo目标检测技术:基础概念(一)
  • 【洛谷题单】--分支结构(一)
  • 脱机部署k3s
  • Python 常用内置高阶函数
  • OO SALV的栏位功能
  • 大屏数据展示页面,数据可视化可以用到的框架和插件
  • 阿里云部署若依后,浏览器能正常访问,但是apifox和小程序访问后报错链接被重置
  • day27 同步互斥
  • IDEA-Research推出的一系列检测、分割模型:从DINO(改进版DETR)、Grounding Dino、DINO-X到Grounded SAM2
  • 【SPIE出版| 前4届均已完成EI检索】第五届算法、高性能计算与人工智能国际学术会议(AHPCAI 2025)
  • 解决GitHub push失败-Failed to connect to github.com port 443: Timed out
  • YooAsset为什么要分组
  • 《深入Java包装类体系:类型转换原理与Integer缓存实战指南》
  • jetson上使用opencv的gstreamer进行MIPI和USB摄像头的连接以及udp推流