开源框架: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是一款灵活且高性能的文档型数据库,具有可扩展性和强大的查询功能,适用于各种应用场景。
1510 1
|
2月前
|
NoSQL Linux 网络安全
开源框架:MongoDB—单机部署
本文介绍MongoDB在Windows和Linux系统的部署与启动方法,涵盖环境要求、安装包下载、目录配置、命令行及配置文件启动方式,并说明Shell连接、图形化工具Compass的使用,以及Linux下的防火墙设置与安全关闭服务步骤,提供常用命令与注意事项。
161 1
|
2月前
|
存储 设计模式 数据库
开源框架:Zookeeper—持久化FileTxnSnapLog
FileTxnSnapLog 是 ZooKeeper 持久化核心类,封装事务日志(TxnLog)与快照(Snapshot),通过组合模式统一管理数据恢复与快照保存。依托 DataTree 树状结构存储,支持基于 zxid 的增量恢复,提升可靠性与性能。
58 1
|
2月前
|
存储 算法 API
开源框架:Zookeeper—持久化FileTxnLog
Zookeeper持久化机制以TxnLog和Snapshot为核心,通过FileTxnLog实现事务日志的追加、提交、读取与清理,保障数据可靠存储。
94 0
|
8月前
|
存储 SQL 关系型数据库
mysql中max_allowed_packet的解释说明
max_allowed_packet 是 MySQL 配置项之一,用于控制单个包(数据包)能够传输的最大字节数。这个参数限制了 MySQL 在执行某些操作时可以接收或发送的最大数据量,尤其是在处理 大查询、二进制数据(如大 BLOB、TEXT 数据) 时。通过设置合适的 max_allowed_packet 值,可以避免在传输大数据时遇到错误。
1055 0
|
应用服务中间件 Linux 网络安全
nginx安装部署ssl证书,同时支持http与https方式访问
为了使HTTP服务支持HTTPS访问,需生成并安装SSL证书,并确保Nginx支持SSL模块。首先,在`/usr/local/nginx`目录下生成RSA密钥、证书申请文件及自签名证书。接着,确认Nginx已安装SSL模块,若未安装则重新编译Nginx加入该模块。最后,编辑`nginx.conf`配置文件,启用并配置HTTPS服务器部分,指定证书路径和监听端口(如20000),保存后重启Nginx完成部署。
4805 8
|
存储 NoSQL Shell
MongoDB复制(副本集)总结
这篇文章是关于MongoDB副本集的总结,包括复制原理、设置副本集、案例分析等内容。
427 1
|
存储 NoSQL MongoDB
MongoDB技术架构详解
MongoDB技术架构详解
|
存储 负载均衡 NoSQL
MongoDB架构设计
【6月更文挑战第6天】MongoDB架构设计
473 2

热门文章

最新文章