开源框架:MongoDB—常用命令

简介: 本案例需求为将专栏文章评论数据存储至MongoDB数据库articledb的comment集合中,涵盖字段如_id、articleid、content等,详述数据库与集合的创建、删除操作,并介绍文档的单条及批量插入方法,遵循BSON格式规范。

一、案例需求背景

核心场景:将专栏文章评论数据存储到 MongoDB,数据库为articledb,核心集合(表)为comment,字段结构如下:

字段名称 字段含义 字段类型 备注
_id 主键 ID ObjectId 或 String MongoDB 默认主键
articleid 文章 ID String
content 评论内容 String
userid 评论人 ID String
nickname 评论人昵称 String
createdatetime 评论日期时间 Date
likenum 点赞数 Int32
replynum 回复数 Int32
state 状态 String 0:不可见;1:可见
parentid 上级 ID String 0 表示文章顶级评论

二、数据库操作

1. 选择与创建数据库

  • 语法:use 数据库名称(数据库不存在则自动创建)
  • 示例:use articledb(创建并切换到 articledb 数据库)
  • 查看所有数据库:show dbsshow databases
  • 查看当前使用的数据库:db
  • 关键说明:
  • 集合(表)需插入文档(记录)后才会真正创建,空数据库不会显示在show dbs结果中。
  • 默认数据库为test,未选择数据库时数据存于test
  • 数据库命名规范:UTF-8 字符串、非空、不含空格 /.$//\0、全小写、最多 64 字节。
  • 保留数据库:
  • admin:权限根数据库,用户在此库授权后继承所有库权限。
  • local:数据不复制,仅存本地服务器数据。
  • config:分片集群时使用,存储分片配置。

2. 数据库删除

  • 语法:db.dropDatabase()(仅删除已持久化的数据库)

三、集合操作

集合类似关系型数据库的 “表”,支持显式创建和隐式创建。

1. 集合创建

  • 显式创建(了解即可):db.createCollection("集合名称")
  • 示例:db.createCollection("mycollection")
  • 隐式创建(推荐):向不存在的集合插入文档时,自动创建集合(无需手动创建)。
  • 查看当前库集合:show collectionsshow tables

2. 集合命名规范

  • 非空字符串,不含 \0(空字符)。
  • 不能以system.开头(系统集合保留前缀)。
  • 避免含$(仅系统生成集合可能包含)。

3. 集合删除

  • 语法:db.集合名称.drop()db.collection.drop()
  • 返回值:删除成功返回true,失败返回false
  • 示例:db.mycollection.drop()(删除 mycollection 集合)

四、文档基本操作(插入)

文档类似关系型数据库的 “记录”,采用 BSON 格式(类似 JSON),核心插入操作如下:

1. 单个文档插入

  • 语法:db.collection.insert(<文档>, {writeConcern: <配置>, ordered: <布尔值>})
  • 也可使用save()方法。
  • 示例(插入评论数据):
db.comment.insert({
  "articleid": "100000",
  "content": "今天天气真好,阳光明媚",
  "userid": "1001",
  "nickname": "Rose",
  "createdatetime": new Date(),
  "likenum": NumberInt(10),
  "state": null
})
  • 关键要点:
  • 集合不存在时自动隐式创建。
  • 数字默认是 double 类型,存整型需用NumberInt(整型值)
  • 插入当前日期用new Date()
  • 未指定_id时,MongoDB 自动生成主键。
  • 字段无值可设为null,或直接省略该字段。

2. 批量文档插入

  • 语法:db.collection.insertMany([<文档1>, <文档2>, ...], {writeConcern: <配置>, ordered: <布尔值>})
  • 示例(批量插入多条评论):
db.comment.insertMany([
  {"_id": "1", "articleid": "100001", "content": "健康很重要,一杯温水幸福你我他", "userid": "1002", "nickname": "相忘于江湖", "createdatetime": new Date("2019-08-05T22:08:15.522Z"), "likenum": NumberInt(1000), "state": "1"},
  {"_id": "2", "articleid": "100001", "content": "我夏天空腹喝凉开水,冬天喝温开水", "userid": "1005", "nickname": "伊人憔悴", "createdatetime": new Date("2019-08-05T23:58:51.485Z"), "likenum": NumberInt(888), "state": "1"}
])

3. 文档命名与格式注意事项

  • 键 / 值对有序,区分类型和大小写。
  • 文档不能有重复键,键为 UTF-8 字符串。
  • 键命名规范:不含 \0,.$需特殊场景使用,下划线_开头的键为保留键(非强制)。
目录
相关文章
|
NoSQL 安全 MongoDB
Mongo DB之用户与权限管理、备份与恢复管理以及客户端工具的使用
MongoDB是一款灵活且高性能的文档型数据库,具有可扩展性和强大的查询功能,适用于各种应用场景。
1668 1
|
NoSQL MongoDB Docker
Docker Compose安装MongoDB,并向宿主机映射数据文件/配置文件/日志文件
本文为博主实践Docker Compose方式安装MongoDB记录,希望对大家有所帮助。
4424 0
|
4月前
|
SQL 存储 关系型数据库
干掉 90% 慢 SQL!MySQL 全链路排查与优化方法论,从执行计划到表结构全拆解
本文系统讲解MySQL慢SQL优化全链路方法:从慢查询日志精准定位、EXPLAIN执行计划深度解析,到10大索引失效场景根因拆解、8大SQL改写实战技巧;涵盖表结构设计规范与Java层防控实践,强调“先定位、再看执行计划、后优化”,助力开发者高效解决80%以上数据库性能瓶颈。
929 1
|
7月前
|
SQL 缓存 Java
开源框架:MyBatis
本文汇总MyBatis核心知识点,涵盖配置优先级、多环境设置、事务管理、映射关系、分页实现与缓存机制,系统讲解常见属性及执行器原理,助力高效掌握ORM框架应用。
214 4
|
7月前
|
存储 容器
开源框架:Zookeeper—Watcher机制(一)
Zookeeper的Watcher机制用于监听数据与状态变化,核心由Watcher接口、Event枚举(KeeperState/EventType)、WatchedEvent事件封装及ZKWatchManager管理器构成,实现客户端对节点变更的一次性通知与回调处理。
173 3
|
7月前
|
存储 设计模式 数据库
开源框架:Zookeeper—持久化FileTxnSnapLog
FileTxnSnapLog 是 ZooKeeper 持久化核心类,封装事务日志(TxnLog)与快照(Snapshot),通过组合模式统一管理数据恢复与快照保存。依托 DataTree 树状结构存储,支持基于 zxid 的增量恢复,提升可靠性与性能。
156 1
|
7月前
|
存储 算法 API
开源框架:Zookeeper—持久化FileTxnLog
Zookeeper持久化机制以TxnLog和Snapshot为核心,通过FileTxnLog实现事务日志的追加、提交、读取与清理,保障数据可靠存储。
166 0
|
7月前
|
NoSQL JavaScript 前端开发
快速入门MongoDB:适合前端开发者的指南
本文由喵喵侠撰写,手把手教你如何在Node.js中操作MongoDB。涵盖环境搭建、MongoDB安装配置、Node.js连接数据库及增删改查实践,并通过HTML页面实现前后端交互,适合前端初学者快速掌握MongoDB基础应用。
285 0
|
存储 NoSQL MongoDB
MongoDB技术架构详解
MongoDB技术架构详解
|
存储 JSON API
小红书获取笔记详情API接口的开发、应用与收益。
小红书笔记详情API采用Python与Django框架开发,使用MySQL数据库存储数据。接口通过HTTP GET请求获取笔记详情,返回JSON格式数据,包含笔记内容、作者信息、图片链接等。该API应用于小红书APP内笔记展示和互动功能,并支持第三方平台的内容整合与数据分析,提升用户体验与活跃度,促进品牌合作推广,优化平台运营效率,为平台带来显著收益。
1260 1

热门文章

最新文章