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

1.Mongodb 介绍及部署

  • MongoDB 是一个开源的文档导向数据库,采用NoSQL(非关系型数据库)的设计理念。
  • MongoDB是一个基于分布式文件存储的数据库。
    • 分布式文件存储是一种将文件数据分布式的存储在多台计算机上。
  • MongoDB是一款强大的文档导向数据库,适合处理大量动态数据和需要灵活数据模型的应用场景
    • 文档导向数据库:它以文档的形式存储数据,每个文档都是一个键值对的集合,类似于JSON对象,可以包含各种类型的数据。
  • MongoDB的优点:
    • 文档向导:MongoDB存储数据的基本单位是文档(类似于JSON{java scripts}对象),文档可以包含嵌套的数据结构,这是得数据模型更加灵活
    • 可扩展性:MongoDB支持水平扩展,可以通过添加更多的机器来增加存储容量和提高性能
    • 高性能:MongoDB使用内存映射文件的方式来提供高性能的数据访问,并且支持复制和分片
    • 丰富的查询语言:MongoDB提供了丰富的查询语言和索引支持,可以进行复杂的数据查询和聚合操作
  • 数据存储的逻辑结构:
    • MySQL 逻辑结构:
      • 库-表-数据行
    • Mongodb 逻辑结构:
      • 库-集合-文档
  • Mongodb的部署:
    • 1.创建一个用户,专门用来管理Mongodb
      • useradd mongod
      • passwd mongod
    • 2.创建mongodb所需要的目录:
      • mkdir -p /mongodb/conf
      • mkdir -p /mongodb/log
      • mkdir -p /mongodb/data
    • 3.拖包安装:
      • 解压数据包:tar xf mongodb-linux-x86_64-rhel70-4.4.4.tgz
      • 拷贝目录下的bin目录到 /下的mongodb
        • cp -a mongodb-linux-x86_64-rhel70-4.4.4/bin/ /mongodb
    • 4.设置目录结构权限:
      • chown -R mongod:mongod /mongodb
    • 5.设置用户环境变量:
      • su - mongod
      • vi .bash_profile
        • 添加:export PATH=/mongodb/bin:$PATH
        • 保存退出
      • source .bash_profile
    • 6.创建配置文件并写入内容(YAML格式):
      • cat > /mongodb/conf/mongo.conf <<EOF
      • systemLog:
      • destination: file
      • path: "/mongodb/log/mongodb.log"
      • logAppend: true
      • storage:
      • journal:
      • enabled: true
      • dbPath: "/mongodb/data/"
      • processManagement:
      • fork: true
      • net:
      • port: 27017
      • bindIp: 192.168.8.5,127.0.0.1
      • EOF
    • 7.启动/关闭mongodb(端口:27017):
      • 启动:mongod -f /mongodb/conf/mongo.conf
      • 关闭:mongod -f /mongodb/conf/mongo.conf --shutdown
    • 8.登录mongodb:
      • mongo
    • 至此 mongodb数据库部署完毕,以下是常用的基本操作
  • mongodb常用基本操作:
    • mongodb 默认存在的库
      • > show databases;
      • admin 0.000GB
      • config 0.000GB
      • local 0.000GB
  •  
    • 查看当前db版本:db.version()
    • 查看当前在那个库中:db\db.getName()
    • 查看所有库:show dbs
    • 切换数据库:use [库名]
    • 查看所有的collection(集合\表):show tables
    • 显示当前数据库状态:db.stats()
    • 查看当前连接数据库的主机ip:db.getMongo()
  • Mongodb对象的操作:
    • mongo mysql
    • 库 -----> 库
    • 集合 -----> 表
    • 文档 -----> 数据行
  • 1.库的操作:
    • 创建库时注意:
      • 当use的时候,系统就会自动创建一个数据库。
      • 如果use之后没有创建任何集合。
      • 系统就会删除这个数据库。
    • 删除数据库;
      • 如果没有选择任何数据库,会删除默认的test数据库
      • //删除test数据库
    • 创建一个A库:use A
    • 删除A库:
      • use A
      • db.dropDatabase()
      • 先使用use切换到要删除的库下,再使用db.dropDatabase()命令删除
  •  
    • 2.集合的操作:
      • 创建集合语法格式:
        • db.createCollection(name,options)
        • 参数说明:
          • name: 要创建的集合名称
          • options: 可选参数, 指定有关内存大小及索引的选项
          • capped 值为true,则创建固定集合
          • autoIndexId 值为true,自动在 _id 字段创建索引。
          • size 为固定集合指定一个最大值(以字节计)
          • max 指定固定集合中包含文档的最大数量
      • 实例1:
        • use app
        • 创建a表:db.createCollection('a')
        • 创建b表:db.createCollection('b')
        • 查看当前数据库下所有集合:show collections\db.getCollectionNames()
      • 实例2:
        • 当插入一个文档的时候一个集合就会自动创建
        • db.集合.insert({键:'值',键:'值'})
      • 查询数据:
        • 查看集合中所有内容:
          • db.haha.find().pretty()
        • 查看集合满足条件的文档:
          • db.haha.find({id:'102'}).pretty()、
      • 删除集合:
        • db.集合名.drop()
      • 重命名集合:
        • db.old.renameCollection("new")
      • 批量插入数据:
        • for(i=0;i<10000;i++){db.log.insert({"uid":i,"name":"docker","age":6,"date":new Date()})}
  •  
    • 3.mongodb数据查询语句:
      • 查询集合中所有数据:db.集合.find()
        • 默认每页显示20条记录,当显示不下的的情况下,可以用it迭代命令查询下一页数据。
      • 查看第一条记录:db.log.findOne()
      • 查询总的记录数:db.log.count()
      • 删除集合中的记录数:
        • 删除满足条件的文档:db.log.deleteOne({'uid':0})
        • 删除集合中所有记录:db.log.remove({})
        • 查看去掉重复的数据:db.log.distinct('name')
  •  
    • 4.查询集合存储信息
      • 查看集合状态:db.集合名.stats()
      • 查询集合中数据的原始大小:db.log.dataSize()
      • 查询集合中索引数据的原始大小:db.log.totalIndexSize()
      • **查询集合中索引+数据压缩存储之后的大小:db.log.totalSize()
      • 查询集合中数据压缩存储的大小:db.log.storageSize()
  •  
    • 5.变量插入数据:
      • 插入数据:
        • db.col.insert({title: 'MongoDB',
        • description: 'Nosql数据库',
        • by: '教程',
        • url: 'http://www.test.com',
        • tags: ['mongodb', 'database', 'NoSQL'],
        • likes: 100
        • })
      • 将以上插入数据的操作定义为变量:
        • document=({title: 'MongoDB',
        • description: 'Nosql数据库',
        • by: '教程',
        • url: 'http://www.test.com',
        • tags: ['mongodb', 'database', 'NoSQL'],
        • likes: 100
        • });
      • 使用变量插入数据:
        • db.col.insert(document)
  •  
    • 6.单行插入数据\多行插入数据:
      • 单行:db.collection.insertOne({'a':1})
      • 多行:
        • 注:先将插入操作定义为一个变量,然后执行这个变量
        • var res1=db.collection.insertMany([{"b": 3}, {'c': 4}])
        • res1
  •  
    • 7.MongoDB更新文档
      • 先插入数据用于验证:
        • db.col.insert({
        • title: 'MongoDB',
        • description: 'Nosql数据库',
        • by: '教程',
        • url: 'http://www.test.com',
        • tags: ['mongodb', 'database', 'NoSQL'],
        • likes: 100
        • })
      • 使用update()方法来更新标题(title):
        • db.col.update({'title':'MongoDB'},{$set:{'title':'123'}})
      • 查看更新结果:
        • > db.col.find().pretty()
        • 发现只修改了第一行文档,想要修改行需要设置multi参数为true
          • db.col.update({'title':'MongoDB'},{$set:{'title':'123'}},{multi:true})
      • 删除匹配条件的一条文档:
        • db.collection.deleteOne({"c":4})
      • 删除匹配条件的所有文档:
        • db.collection.deleteMany({"b":3})

相关文章:

1.Mongodb 介绍及部署

MongoDB 是一个开源的文档导向数据库&#xff0c;采用NoSQL&#xff08;非关系型数据库&#xff09;的设计理念。MongoDB是一个基于分布式文件存储的数据库。 分布式文件存储是一种将文件数据分布式的存储在多台计算机上。MongoDB是一款强大的文档导向数据库&#xff0c;适合处…...

Java 技巧:如何获取字符串中最后一个英文逗号后面的内容

在日常的Java编程中&#xff0c;处理字符串是非常常见的任务之一。有时我们需要从一个字符串中截取特定部分&#xff0c;例如获取最后一个英文逗号后的内容。这篇文章将详细介绍如何使用Java来实现这一需求&#xff0c;并提供一个示例代码来演示其实现过程。 需求分析 假设我们…...

玩转微服务-GateWay

目录 一. 背景二. API网关1. 概念2. API网关定义3. API网关的四大职能4. API网关分类5. 开源API网关介绍6. 开源网关的选择 三. Spring Cloud Gateway1. 文档地址2. 三个核心概念3. 工作流程4. 运行原理4.1 路由原理4.2 RouteLocator 5. Predicate 断言6. 过滤器 Filter6.1. 过…...

Amortized bootstrapping via Automorphisms

参考文献&#xff1a; [MS18] Micciancio D, Sorrell J. Ring packing and amortized FHEW bootstrapping. ICALP 2018: 100:1-100:14.[GPV23] Guimares A, Pereira H V L, Van Leeuwen B. Amortized bootstrapping revisited: Simpler, asymptotically-faster, implemented. …...

【人工智能】ChatGPT基本工作原理

ChatGPT 是由 OpenAI 开发的一种基于深度学习技术的自然语言处理模型&#xff0c;它使用了名为 GPT&#xff08;Generative Pre-trained Transformer&#xff09;的架构。GPT 模型是一种基于 Transformer 架构的预训练语言模型&#xff0c;它通过大量的文本数据进行预训练&…...

The First项目报告:Stargate Finance重塑跨链金融的未来

Stargate Finance是一个基于LayerZero协议的去中心化金融平台&#xff0c;自2022年3月由LayerZero Labs创建以来&#xff0c;一直致力于为不同区块链之间的资产转移提供高效、低成本的解决方案。凭借其独特的跨链技术和丰富的DeFi服务&#xff0c;Stargate Finance已成为连接不…...

Python魔法之旅-魔法方法(22)

目录 一、概述 1、定义 2、作用 二、应用场景 1、构造和析构 2、操作符重载 3、字符串和表示 4、容器管理 5、可调用对象 6、上下文管理 7、属性访问和描述符 8、迭代器和生成器 9、数值类型 10、复制和序列化 11、自定义元类行为 12、自定义类行为 13、类型检…...

公司面试题总结(三)

13.说说你对 BOM 的理解&#xff0c;常见的 BOM 对象你了解哪些&#xff1f; BOM (Browser Object Model)&#xff0c;浏览器对象模型&#xff0c; ⚫ 提供了独立于内容与浏览器窗口进行交互的对象 ⚫ 其作用就是跟浏览器做一些交互效果 ⚫ 比如如何进行页面的后退&…...

PLSQL 报错 could not locate oci.dll

0、确保PLSQL已激活。 1、在PLSQL安装包内搜索oci.dll&#xff0c;如果没有搜到需要下载 链接&#xff1a;https://pan.baidu.com/s/1HOfKAEFfuAGYACjfcwqJ1g 提取码&#xff1a;6evh 2、打开PLSQL&#xff0c;设置oci.dll的路径 ps&#xff1a;PLSQL安装包 链接&#xff…...

【方案+源码】智慧园区建设方案

智慧园区一体化运营管理平台建设方案旨在通过集成先进的信息技术&#xff0c;实现园区的智能化、高效化、绿色化管理。该平台整合了物联网、大数据、云计算等技术&#xff0c;为园区提供全方位、一体化的运营服务。 方案包括智能监控、能源管理、安防系统、停车管理、物业管理等…...

Java操作数据库 —— JDBC ① 基础篇

我走我的路&#xff0c;有人拦也走&#xff0c;没人陪也走 —— 24.6.7 JDBC JDBC就是使用Java语言操作关系型数据库的一套API 一、JDBC简介 JDBC 概念 JDBC 就是使用Java语言操作关系型数据库的一套API 全称:(Java DataBase Connectivity)意为Java 数据库连接 JDBC 本质: ①…...

webpack和vite区别

一、Webpack 1. 概述 Webpack 是一个模块打包工具&#xff0c;它会递归地构建依赖关系图&#xff0c;并将所有模块打包成一个或多个bundle&#xff08;包&#xff09;。 2. 特点 配置灵活&#xff1a;Webpack提供了高度可定制的配置文件&#xff0c;可以根据项目需求进行各…...

FL Studio21永久免费破解中文版下载,让我这个音乐制作爱好者如获至宝!

FL Studio21永久免费破解中文版下载&#xff0c;让我这个音乐制作爱好者如获至宝&#xff01;&#x1f3b6; 这款软件功能强大&#xff0c;操作简单易上手。我可以轻松地创作出各种风格的音乐作品。无论是流行、摇滚还是电子音乐&#xff0c;都能轻松驾驭。&#x1f3a7; 使用F…...

vue3 监听器,组合式API的watch用法

watch函数 在组合式 API 中&#xff0c;我们可以使用 watch 函数在每次响应式状态发生变化时触发回调函数 watch(ref,callback&#xff08;newValue,oldValue&#xff09;&#xff0c;option:{}) ref:被监听的响应式量&#xff0c;可以是一个 ref (包括计算属性)、一个响应式…...

苹果WWDC开幕发布AI大模型,股价却跌近2%

KlipC报道&#xff1a;北京时间6月11日凌晨&#xff0c;苹果一年一度的“全球开发者大会”&#xff08;WWDC&#xff09;开幕。会上&#xff0c;先后介绍了iOS 18、iPadOS 18、watchOS 11等系统的更新&#xff0c;同时还展示了多个AI功能。宣布与OpenAI构建合作伙伴关系。然而&…...

C++ 11 【可变参数模板】【lambda】

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;C修炼之路⏪   &#x1f69a;代码仓库:C高阶&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多C知识   &#x1f51d;&#x1f51d; 目录 前言 一、新的类功能 1.1默认成员函数—…...

c 宏应用举例

1.概要 #include <iostream> //变量可以直接使用 #define fun() a 100; //用变量计算可以 #define fun2(a) a*2; //用变量替换可以 #define fun3(a) d[a] a; //##链接的作用&#xff0c;一般用于链接变量名 #define fun4(type,name) type name##_s 4; //#的作用是转换…...

微信公众号(公众平台) 和 微信开放平台的scope的差异

微信公众号&#xff08;公众平台&#xff09; 和 微信开放平台 是两码事。 公众号&#xff08;公众平台&#xff09;获取的scope只包括两种&#xff1a;snsapi_base 和snsapi_userinfo&#xff0c;前者是静默获取&#xff0c;用户无感知&#xff1b;后者是需要用户确认同意的。…...

基于pytorch实现的DenseUnet医学图像分割(腹部多脏器)

1、前言 本章将介绍将densenet的主干网络引入unet中 官方实现的代码&#xff1a;kits19-challenge/network at master nitsaick/kits19-challenge (github.com) 本章实现的项目目录如下&#xff1a; 主要代码有train、evaluate、predict脚本 2、代码介绍 数据预处理脚本 数据…...

富格林:正规策划实现安全做单

富格林悉知&#xff0c;在投资理财的过程中&#xff0c;最重要的是控制风险实现安全做单避免损失。但是市场客观因素带来的风险并不能完全避免&#xff0c;因此投资者需要采取一些正规技能来减低风险投资风险实现安全做单。接下来就由富格林给大家分享一些实现安全做单的正规方…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...