MongoDB操作基本教程

这篇具有很好参考价值的文章主要介绍了MongoDB操作基本教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MongoDB

版本(重要)

v6.0.7

可执行文件说明

bin目录下默认可执行文件说明

  • mongod 实例,这样不仅减少资源竞争,而且服务器故障也不会同时影响到多个服务。
  • mongos 在分片集群中扮演路由的角色,提供客户端和分片之间的接口。
  • mongosh 是 MongoDB 集成的交互式 shell 工具。

数据库工具

需要另外下载:https://www.mongodb.com/try/download/shell

图形界面工具:https://www.mongodb.com/try/download/compass

MongoDB 数据库工具是用于处理 MongoDB 部署的命令行实用程序的集合。数据库工具包括以下二进制文件:

二进制导入导出
mongodump: 导出 mongod 数据库的二进制数据
mongorestore: 恢复 mongodump 导出文件的数据到 mongod 或 mongos 数据库
bsondump: 转换 BSON 导出文件成 JSON 格式
数据导入导出
mongoimport: 从外部 JSON、CSV 或 TSV 文件中加载数据
mongoexport: 从 mongod 实例中导出数据到 JSON 或 CSV 文件中
诊断工具
mongostat: 快速诊断当前运行的 mongod 或 mongos 实例的状态
mongotop: 统计 mongod 实例读取和写入数据的时间
GridFS 工具
mongofiles: 支持在 GridFS 对象中操作 MongoDB 实例中存储的文件

ps:

在 MongoDB 中,核心进程主要包含了 mongod、mongos 和 mongosh 三个。

其中最主要的是 mongod 程序,其在不同的部署方案中(单机部署、副本集部署、分片集群部署),通过不同的配置,可以扮演多种不同的角色:

在单机部署中作为数据库服务器(提供所有读写功能)
在副本集部署中,通过配置,可以部署为 Primary 节点(负责写数据,也可以提供查询)、Secondary 节点(从主节点复制数据,也可以提供查询)、以及 Arbiter 节点(不保存数据,主要用于参与选举投票)
在分片集群中,除了在每个分片中扮演上述角色外,还扮演着配置服务器的角色(存储有分片集群的所有元数据信息,mongos 的数据路由分发等都要依赖于它)
在一台服务器上,可以启动多个 mongod 服务。但在实际生产部署中,通常是建议一台服务器部署一个

规则

  • 文档中的键/值对是有序的。
  • 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
  • MongoDB区分类型和大小写。
  • MongoDB的文档不能有重复的键。
  • 文档的键是字符串。

原有库

admin: 存放有数据库帐号相关信息,在身份验证和授权时使用
local: 特定于单个服务器的数据会存储在此数据库中。在副本集中,local 数据库用于存储复制过程中所使用的数据,而其本身不会被复制。
config: 用于分片集群环境,存放了分片相关的元数据信息

类型

最新类型文档
目前多了number的int32, long,Decimal128,类型检查

String	字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。
Integer	整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
Boolean	布尔值。用于存储布尔值(真/假)。
Double	双精度浮点值。用于存储浮点值。
Min/Max keys	将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。
Array	用于将数组或列表或多个值存储为一个键。
Timestamp	时间戳。记录文档修改或添加的具体时间。
Object	用于内嵌文档。
Null	用于创建空值。
Symbol	符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。
Date	日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
Object ID	对象 ID。用于创建文档的 ID。
Binary Data	二进制数据。用于存储二进制数据。
Code	代码类型。用于在文档中存储 JavaScript 代码。
Regular expression	正则表达式类型。用于存储正则表达式。

ObjectId组成:时间戳(4)+机器码(3)+PID(3)+计数器(3)
从ObjectId可得到数据戳,所以不需要记录创建时间

var id = ObjectId()
id.getTimestamp() // 2023-07-13T06:02:28.000Z
id.toString() // 64af93742f23b81ba99ae1e4

日期

var myDate = new Date()
myDate.toString()
Date()

命令操作

连接数据库

以前是使用mongo命令连接,现在使用mongosh连接

默认没有启用访问控制,所以默认是没有用户名的

一般连接

mongosh 直接连接即可

关闭免密登录
  1. 启用认证

找到mongo的安装目录x:\MongoDB\Server\version\bin下的 mongod.cfg 文件,在 #security: 下添加下面代码

security:
 authorization: enabled
  1. 重启服务
net stop mongodb
net start mongodb
  1. 创建用户

db.createUser({user:“admin”,pwd:“123456”,roles:[“root”]})

  1. 使用用户名连接
  • (1)使用用户名密码连接

mongosh文档

mongosh连接带认证方式

mongosh --port 27017 --authenticationDatabase “admin” -p // 回车输入密码

  • (2)直接进去,然后再进行认证。

直接连接是可以进去的,但是无法对数据库里面的表进行操作,只能看到有表

进入后进行认证,然后就可以操作了

use admin
db.auth("admin", "123456")
  1. 其他命令
db.dropUser('admin')  # 删除用户 
db.updateUser('admin', {pwd: '654321'})  # 修改用户密码  
db.createUser({user:"你自定义的用户名",pwd:"你自定义的密码",roles:[{role:"readWrite",db:"test"}]}) # 对具体数据库设置用户权限 

ps 权限说明

(1)数据库用户角色:read(只读)、readWrite(可读写);
(2)数据库管理角色:dbAdmin(在当前db中执行管理操作的权限)、dbOwner(在当前db中执行任意操作)、userAdmin(在当前db中管理user的权限);
(3)集群管理角色:clusterAdmin(管理机器的最高权限)、clusterManager(管理和监控集群的权限)、clusterMonitor(监控集群的权限)、hostManager( 管理Server);
(4)备份恢复角色:backup、restore;
(5)所有数据库角色:readAnyDatabase(在所有数据库上都有读取数据的权限)、readWriteAnyDatabase(在所有数据库上都有读写数据的权限)、userAdminAnyDatabase(在所有数据库上都有管理user的权限)、dbAdminAnyDatabase(管理所有数据库的权限);
(6)超级用户角色:root(超级用户)

查看数据库版本

外部

mongod --version
内部
db.version()

创建库

use airec // 创建
db // 查看当前数据库

ps:此时看不到数据库,需要插入集合和数据才行

crud[curd]

以前的方法和目前的方法对比一览表

删除

use airec // 切换数据库
db.dropDatabase() // 删除
show dbs // 查看是否成功

创建集合(有可选参数)

use airec
db.createCollection(‘behavior’)
db.createCollection(“item”)
db.createCollection(“user”)
db.createCollection(“test”)

删除集合

use airec
db.dropCollection(“test”)
show collections // 查看集合
show tables // 查看集合

插入文档

db.behavior.insert({title:“test”})

查找文档

db.behavior.find()
db.behavior.find().pretty()

查找 and

db.behavior.find({key: value})

查找 or

db.behavior.find($or:[{key: value}, {key2, value2}])

查找 条件

db.behavior.find({age: {$gt: 3}}) // 其他类似 $gt $gte $lt $lte

更新文档

db.behavior.updateOne({where}, {KaTeX parse error: Expected 'EOF', got '}' at position 12: set: {data}}̲) db.behavior.u…set: {data}})

删除文档

db.col.remove({条件},justOne:false) // 默认删除所有

db.behavior.remove({name:“hjj”}) // 删除所有name为“hjj”的文档
db.behavior.remove({name:“hjj”, 1}) // justOne 只删除一条匹配到的文档

remove 过期,使用以下代替

db.behavior.deleteOne()
db.behavior.deleteMany()

查找时根据字段类型过滤-$type

用于返回需要的字段的类型筛选

可字符串,可数字代表级别

类型表

db.behavior.find({age: {KaTeX parse error: Expected 'EOF', got '}' at position 8: type: 2}̲}) // 查找字符串的age…type: string}}) // 查找字符串的age

聚合函数

直接看文档

备份和恢复

mongodump文档

说明,已经不使用-o dict来输出,而是使用--archive=dict

更新换代快,还是得看直接看文档,被坑了半天。。。

归档备份

mongodump -u admin -p=“” --authenticationDatabase=admin --archive=D:/bk/mongodump-airec-db --db=airec

恢复备份

mongorestore mongodump -u admin -p=“” --authenticationDatabase=admin --archive=D:/bk/mongodump-airec-db --db=airec

TODO:主从分片文章来源地址https://www.toymoban.com/news/detail-561658.html

主从

分片

到了这里,关于MongoDB操作基本教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [虚幻引擎 MongoDB Client 插件说明] DTMongoDB MongoDB数据库连接插件,UE蓝图可以操作MongoDB数据库增删改查。

    本插件可以在UE里面使用蓝图操作MongoDB数据库, 对数据库进行查询,删除,插入,替换,更新操作。 插件下载地址在文章最后。 Create MongoDB Client - 创建客户端对象 创建一个 MongoDB 客户端对象。 Connect By Url - 连接到数据库 Url :MongoDB的连接地址。 如 mongoDB://account:password@ip:

    2024年02月14日
    浏览(96)
  • MongoDB-数据库文档操作(2)

    任务描述 文档数据在 MongoDB 中的查询和删除。 相关知识 本文将教你掌握: 查询文档命令; 删除文档命令。 查询文档 我们先插入文档到集合 stu1 : 然后查看 stu1 ,命令和结果如图1所示(因为我们没有设置 _id ,所以 MongoDB 会默认生成: 图 1 上述显示的文档格式不够整齐,

    2024年01月18日
    浏览(43)
  • MongoDB-数据库文档操作(1)

    任务描述 文档数据在 MongoDB 中的插入和更新。 相关知识 本文将向大家介绍文档数据在 MongoDB 中的基本操作。 文档的数据结构和 JSON 基本一样,所有存储在集合中的数据都是 BSON 格式。BSON 是一种类 JSON 的一种二进制形式的存储格式,简称: Binary JSON 。 本文将教你掌握:

    2024年01月17日
    浏览(49)
  • 【Nodejs】操作mongodb数据库

    Mongoose是一个让我们可以通过Node来操作MongoDB的模块。 Mongoose是一个对象文档模型(ODM)库,它对Node原生的MongoDB模块进行了进一步的优化封装,并提供了更多的功能。在大多数情况下,它被用来把结构化的模式应用到一个MongoDB集合,并提供了验证和类型转换等好处 mongoose中的对象

    2024年02月15日
    浏览(40)
  • Python 操作 MongoDB 数据库介绍

    MongoDB 是一款面向文档型的  NoSQL  数据库,是一个基于分布式文件存储的开源的非关系型数据库系统,其内容是以  K/V  形式存储,结构不固定,它的字段值可以包含其他文档、数组和文档数组等。其采用的  BSON (二进制 JSON )的数据结构,可以提高存储和扫描效率,但空

    2024年02月10日
    浏览(50)
  • redis及mongoDB数据库操作

    Redis作业 1、string类型数据的命令操作: (1) 设置键值: SET key value 例如: SET name \\\"John\\\" (2) 读取键值: GET key 例如: GET name (3) 数值类型自增1: INCR key 例如: INCR count (4) 数值类型自减1: DECR key 例如: DECR count (5) 查看值的长度: STRLEN key 例如: STRLEN name 2、lis

    2024年02月16日
    浏览(41)
  • MongoDB创建用户 、数据库、索引等基础操作

    MongoDB的权限认证是相对来说比较复杂的,不同的库创建后需要创建用户来管理。 本机中的MongoDB是docker 启动的,所以先进入docker的镜像中 这样就进入到了镜像MongoDB中,然后输入命令连接MongoDB数据库   注意用户名密码以及数据库名称  出现这个界面说明登录成功 接下来开始

    2024年02月14日
    浏览(47)
  • MongoDB常用的操作(服务器、数据库、集合)

    前面两篇已经介绍了MongoDB系统架构及其BSON数据类型。本文将讲解基本的MongoDB操作。 一、MongoDB启动命令 启动MongoDB 查看是否启动成功 重启MongoDB 关闭MongoDB 二、使用init命令操作MongoDB 启动MongoDB 查看是否启动成功 重启MongoDB 关闭MongoDB 三、启动mongodb客户端 查看该服务是否启动

    2024年02月07日
    浏览(64)
  • 数据库SQL2000最基本的安装和操作教程

    Chengg0769 2012年 转载请保留以下版权来源 www.mis2erp.com http://blog.csdn.net/chengg0769 http://www.haojiaocheng.cc 题外话: 之前写了一个项目,因为是国企,各种文档都要给到他们。当时就写了一个简单的维护管理 SQL2000 的文档。这是给客户管理员看的。有时候很需要客户管理员的密切配合

    2024年02月08日
    浏览(56)
  • Mongodb 以及 node.js中使用mongoose操作数据库

    目录 1、lowdb 2、Mongodb是什么? 3、Mongodb核心概念 4、Mongodb的下载与使用 5、数据库与集合命令 5.1、数据库命令 5.2、集合命令 5.3、文档命令 6、Mongoose 6.1、插入文档 6.2、字段类型 6.3、字段值验证 6.3.1、必填项 6.3.2、默认值 6.3.3、枚举值 6.3.4、唯一值 6.4、删除文档 6.5、更新文

    2024年02月11日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包