MongoDB的基本操作介绍及使用

MongoDB是一种面向文档的NoSQL数据库,以其高性能、高可用性和易扩展性而受到广泛关注。以下是MongoDB的基本操作介绍及使用:

一、安装与配置

安装MongoDB相对简单,可以从MongoDB官网下载对应操作系统的安装包进行安装。在安装过程中,可以选择数据库的安装目录、端口号等基础配置。安装完成后,启动mongod进程即可运行MongoDB服务器。

二、数据库操作

  1. 新建数据库
    • 语法:use DATABASE_NAME。其中use用于切换/创建数据库,若不存在则创建,否则切换到指定数据库。DATABASE_NAME为数据库名称。
    • 示例:use articledb,创建或切换到articledb数据库。
  2. 查看数据库
    • 语法:show dbs,查看全部数据库。
    • 注意事项:新建的数据库在没有任何集合(collection)或数据时,不会显示在show dbs的列表中。需要插入至少一个文档(document)到集合中,数据库才会显示在列表中。
  3. 删除数据库
    • 语法:db.dropDatabase()。其中db表示当前数据库对象,dropDatabase()用于删除当前数据库。
    • 注意事项:在执行删除操作前,应使用use命令切换到要删除的数据库,以防止误删。

三、集合操作

  1. 创建集合
    • 在MongoDB中,通常不需要手动创建集合。当插入文档时,如果集合不存在,MongoDB会自动创建该集合。
    • 手动创建集合的语法(可选):db.createCollection("collectionName", {options})。其中collectionName为集合名称,options为可选参数,可以指定集合的存储引擎、大小限制等。
  2. 查看集合
    • 语法:show collections,列出当前数据库中的所有集合。
  3. 删除集合
    • 语法:db.collectionName.drop()。其中collectionName为要删除的集合名称。

四、文档操作

  1. 插入文档
    • 语法:db.collectionName.insert(document)db.collectionName.insertOne(document)(插入单个文档)或 db.collectionName.insertMany([document1, document2, ...])(插入多个文档)。
    • 示例:插入单个文档db.users.insertOne({ "username":"zhangsan", "password":"88888888" })
  2. 查询文档
    • 语法:db.collectionName.find(query, projection)。其中query为查询条件,projection为可选参数,用于指定返回的字段。
    • 示例:查询users集合中usernamezhangsan的文档db.users.find({"username":"zhangsan"})
  3. 更新文档
    • 语法:db.collectionName.updateOne(query, update, options)(更新单个文档)或 db.collectionName.updateMany(query, update, options)(更新多个文档)。
    • 示例:更新users集合中usernamezhangsan的文档,将密码改为123456db.users.updateOne({"username":"zhangsan"}, {$set:{"password":"123456"}})
  4. 删除文档
    • 语法:db.collectionName.deleteOne(query)(删除单个文档)或 db.collectionName.deleteMany(query)(删除多个文档)。
    • 示例:删除users集合中usernamezhangsan的文档:db.users.deleteOne({"username":"zhangsan"})

五、MongoDB的优点:

  1. 高度可扩展性:MongoDB采用了横向扩展的架构,可以轻松地通过添加更多的节点来扩展数据库的容量和吞吐量。这使得MongoDB非常适合处理大规模数据和高并发访问的场景。
  2. 灵活的数据模型:MongoDB是一个文档数据库,数据以类似JSON的BSON格式存储。这种灵活的数据模型使得MongoDB可以轻松地存储和处理不同结构的数据,而无需事先定义固定的模式。
  3. 高性能:MongoDB具有高度优化的读写操作,支持索引和查询优化。它还提供了内置的分片和复制功能,可以实现数据的水平扩展和高可用性。
  4. 强大的查询功能:MongoDB支持丰富的查询语法和灵活的条件查询,包括范围查询、正则表达式、地理空间查询等。这使得开发人员可以轻松地构建复杂的查询来满足各种需求。
  5. 自动分片和负载均衡:MongoDB内置了自动分片和负载均衡功能,可以在集群中自动将数据划分为多个分片,并将查询请求均匀地分发到各个分片上,从而实现数据的可扩展性和高性能。

六、MongoDB的缺点:

  1. 不支持强事务:相对于传统的关系型数据库(如MySQL、Oracle),MongoDB在某些情况下对事务的支持较弱。虽然MongoDB提供了一些原子操作和事务类似的功能,但它不支持跨多个文档的事务。
  2. 存储空间占用较大:由于MongoDB的数据存储格式比较灵活,存储的数据会占用更多的空间。
  3. 缺乏成熟的维护工具:与一些关系型数据库相比,MongoDB可能缺乏像MySQL那样成熟的维护工具。
  4. 单机可靠性较差:MongoDB在单机环境下的可靠性可能不如一些关系型数据库。

七、MongoDB与关系型数据库(如MySQL、Oracle)的显著差异:

  1. 数据模型:MongoDB使用文档模型,而MySQL和Oracle使用固定的、规范化的数据模型。MongoDB的文档模型更加灵活,可以存储不同结构的数据。
  2. 查询语言:MongoDB使用其自己的查询语言,而MySQL和Oracle使用SQL。这两种查询语言在语法和功能上有所不同。
  3. 事务支持:MongoDB的事务支持较弱,而MySQL和Oracle提供强大的ACID事务支持。
  4. 扩展性:MongoDB是一个基于分布式文件存储的数据库,可以方便地扩展到大量的数据和高并发。虽然MySQL和Oracle也可以扩展,但需要更多的工作和配置。
  5. 延迟:MongoDB对写入操作有较低的延迟,使其非常适合实时应用。而MySQL和Oracle的延迟相对较高。
相关推荐
笃行3502 分钟前
国产化落地避坑 · 干货向|迁移后那条「测试能过、一上生产就查空」的 SQL,多半栽在 WHERE 函数顺序上
数据库
蓝田~31 分钟前
MySQL慢查询怎么优化?B+Tree索引原理+MVCC读不阻塞写+EXPLAIN执行计划,从5秒到0.05秒
数据库·mysql
sunxunyong1 小时前
doris用户资源组配置
数据库
Cloud云卷云舒1 小时前
云卷云舒:HaishanDB的AI原生能力主要应用场景
数据库·人工智能·ai-native·haishandb·移动云长期记忆
时间的拾荒人1 小时前
MySQL 视图详解
android·数据库·mysql
qq_366086222 小时前
sql 查询中关于 null 值判断的问题
数据库·sql
测试修炼手册2 小时前
[测试技术] JUnit 6 入门与实战:断言、参数化与 Mockito
数据库·junit·sqlserver
吴声子夜歌2 小时前
Redis 3.x——集群故障转移
java·数据库·redis·集群
名不经传的养虾人2 小时前
从0到1:企业级AI项目迭代日记 Vol.71|系统显示正常,但实际上什么都没发生
数据库·人工智能·ai编程·ai工作流·企业ai
尽兴-2 小时前
企业数据库选型与演进:Oracle、达梦、MySQL 与分库分表实践
数据库·mysql·oracle·分库分表