Linux 环境“从零”部署 MongoDB 6.0:mongosh 安装与数据操作全攻略

前提

        完成linux平台部署MongoDB【部署教程】且完成mongosh的安装

由于本人使用的是6.0版本的MongoDB,新版本 MongoDB(尤其是 6.0 及以上版本)已经不再默认捆绑传统的 mongo shell,而改用新的 MongoDB Shell(mongosh)。

但有时即便是 mongosh,也需要单独下载和安装,而不会直接出现在 bin 目录下。

本人该版本是没有mongosh的,故自己安装实现的,步骤如下:

mongosh 命令行下载

#下载命令行工具 mongosh
wget https://downloads.mongodb.com/compass/mongosh-2.0.1-linux-x64.tgz
#解压命令行mongosh工具
tar -zxf mongosh-2.0.1-linux-x64.tgz -C /opt/module/mongodb_demo/mongodb/standalone
cd /opt/module/mongodb_demo/mongodb/standalone/mongosh-2.0.1-linux-x64/bin 
cp mongosh /usr/local/bin/  #复制到全局变量中,这样就可以任意位置运行mongosh

配置好后启动好mongodb后运行mongosh命令

出现以上显示 就成功啦!

接下来就介绍相关操作命令嘞


1.创建数据库mydb,并给指定的集合添加文档

use mydb #使用mydb数据库
db.createCollection("xxx") #自定义集合名称

(1)用insert()向集合中添加:_id为1001,姓名为张三,年龄为20的文档。

(2)用insert()向集合中添加:姓名为赵四,年龄为40岁的文档。

(3)用save()向集合中添加:姓名为赵四,年龄为20岁的文档。

在 MongoDB 4.x 版本及以后的版本中,save() 方法已经被弃用,取而代之的是 insertOne() 和 insertMany() 方法。原本save重复插入文档会自动更新,insert重复插入会报错

当使用save()方法时,会报错 TypeError: db.wurui.save is not a function 。

(4)查询各自集合中的内容。-->find()函数

(5)用insert()向集合中添加:_id为1001,姓名为李白,年龄为30的文档。

(6)用save()向集合中添加:_id为1001,姓名为李白,年龄为30的文档。改为insertOne()

2.查找文档

(1).查找集合中姓名为赵四的文档。

(2).查找集合中姓名为赵四,年龄为40的文档。

(3).使用命令查找集合的第一条记录。

db.wurui.findOne()

(4).查询集合中的所有内容。

3.删除文档

(1).使用命令删除集合中姓名为赵四的文档。

(2).删除集合中所有文档。

4.更新数据库

(1)数据准备,新建user集合并插入以下内容:

  1. 将users集合中姓名为方世玉的名字修改为洪七公,college改为安理工。
db.users.update ({ name: "方世玉" },{ $set: { name: "洪七公", college: "安理工" } }
)

        2.将年龄为32岁的所有记录的college改为清华大学。

5.使用mongodb的MapReduce函数

(1)考虑以下文档结构存储用户的文章,文档存储了用户的 user_name 和文章的 status 字段:

>db.XXX.insert({

   "post_text": "纸上得来终觉浅,绝知此事要躬行。",

   "user_name": "Jerry",

   "status":"active"

})

>db.XXX.insert({

   "post_text": "读书不觉已春深,一寸光阴一寸金。",

   "user_name": "Jerry",

   "status":"active"

})

>db.XXX.insert({

   "post_text": "天生我材必有用,千金散尽还复来。",

   "user_name": "Jerry",

   "status":"active"

})

>db.XXX.insert({

   "post_text": "世上无难事,只怕不专心。",

   "user_name": "Jerry",

   "status":"active"

})

>db.XXX.insert({

   "post_text": "穷则独善其身,达则兼济天下。",

   "user_name": "Jerry",

   "status":"disabled"

})

>db.XXX.insert({

   "post_text": "博学之,审问之,慎思之,明辨之,笃行之。",

   "user_name": "Tom",

   "status":"disabled"

})

>db.XXX.insert({

   "post_text": "路漫漫其修远兮,吾将上下而求索。",

   "user_name": "Tom",

   "status":"disabled"

})

>db.XXX.insert({

   "post_text": "夫君子之行,静以修身,俭以养德。",

   "user_name": "Tom",

   "status":"active"

})

(2)在XXX集合中使用 mapReduce 函数来选取已发布的文章(status:“active”),并通过user_name分组,计算每个用户的文章数。

(3)使用 find 操作符来查看 mapReduce 的查询结果。

(4)使用aggregate()计算每个用户的文章数。

6.使用管道操作符

  1. 建立文档:

订单表:

db.order.insert({"order_id":"1","uid":10,"trade_no":"111","all_price":100,"all_num":2})

db.order.insert({"order_id":"2","uid":7,"trade_no":"222","all_price":90,"all_num":2})

db.order.insert({"order_id":"3","uid":9,"trade_no":"333","all_price":20,"all_num":6})

订单商品表:

db.order_item.insert({"order_id":"1","title":"商品鼠标1","price":50,num:1})

db.order_item.insert({"order_id":"1","title":"商品键盘 2","price":50,num:1})

db.order_item.insert({"order_id":"1","title":"商品键盘 3","price":0,num:1})

db.order_item.insert({"order_id":"2","title":"牛奶","price":50,num:1})

db.order_item.insert({"order_id":"2","title":"酸奶","price":40,num:1})

db.order_item.insert({"order_id":"3","title":"矿泉水","price":2,num:5})

db.order_item.insert({"order_id":"3","title":"毛巾","price":10,num:1})

(1)要求查找集合order中的数据,只返回文档中trade_no和all_price字段。

db.order.aggregate([
... {$project:{_id:0,trade_no:1,all_price:1}}])

(2)要求查找集合order中的数据,只返回文档中trade_no和all_price字段,且过滤掉all_price小于90的数据。

db.order.aggregate([{$match:{all_price:{$gte:90}}},{$project:{_id:0,trade_no:1,all_price:1}}])

(3)统计每个订单下的商品总数量,按照订单号分组。

(4)要求查找集合order中的数据,只返回文档中trade_no和all_price字段,且过滤掉all_price小于90的数据,最后按照all_price进行降序排序,返回第一条数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/25057.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL注入之二次注入

1、概述 二次注入是指已存储(数据库、文件)的用户输入被读取后再次进入到 SQL 查询语句中导致的注入。 二次注入是sql注入的一种,但是比普通sql注入利用更加困难,利用门槛更高。普通注入数据直接进入到 SQL 查询中,而…

AORO M6北斗短报文终端:将“太空黑科技”转化为安全保障

在卫星导航领域,北斗系统作为我国自主研发的全球卫星导航系统,正以其独特的短报文通信功能引发全球范围内的广泛关注。这一突破性技术不仅使北斗系统在全球四大导航系统中独树一帜,具备了双向通信能力,更通过遨游通讯推出的AORO M…

xss-lab

xss XSS全称跨站脚本(Cross Site Scripting),为避免与层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故缩写为XSS。这是一种将任意 Javascript 代码插入到其他Web用户页面中执行以达到攻击目的的漏洞。攻击者利用浏览器的动态展示数据功能&#x…

服务器为什么会禁止 Ping?服务器禁止 Ping 的好处

在网络管理和服务器运维中,经常会遇到服务器禁止 Ping 的情况。为了确保网络安全和减少不必要的风险,管理员可能会选择禁止 Ping 命令,即禁止服务器响应 ICMP 请求。尽管 Ping 命令是网络诊断中常用的工具,但禁止 Ping 也有其合理…

课程2. 用PyTorch训练神经网络与梯度下降

课程2. 用PyTorch训练神经网络与梯度下降 Pytorchtorch.TensorPytorch 上的神经网络用于余弦函数逼近的全连接神经网络 训练神经网络 梯度下降最小化一个变量的函数最小化多个变量的函数使用梯度下降训练神经网络在 Pytorch 中训练神经网络从 nn.Module 类继承 将计算传输到显卡…

IP-----动态路由OSPF(2)

这只是IP的其中一块内容,IP还有更多内容可以查看IP专栏,前一章内容为动态路由OSPF ,可通过以下路径查看IP-----动态路由OSPF-CSDN博客,欢迎指正 注意!!!本部分内容较多所以分成了两部分在上一章 5.动态路…

手机打电话时如何识别对方按下的DTMF按键的字符-安卓AI电话机器人

手机打电话时如何识别对方按下的DTMF按键的字符 --安卓AI电话机器人 一、前言 前面的篇章中,使用蓝牙电话拦截手机通话的声音,并对数据加工,这个功能出来也有一段时间了。前段时间有试用的用户咨询说:有没有办法在手机上&#xff…

深入剖析:自定义实现C语言中的atoi函数

在C语言的标准库中, atoi 函数是一个非常实用的工具,它能够将字符串形式的数字转换为对应的整数。然而,当我们深入探究其实现原理时,会发现其中蕴含着许多有趣的编程技巧和细节。本文将详细讲解如何自定义实现一个类似 atoi 功能的…

PyTorch 源码学习:GPU 内存管理之它山之石——TensorFlow BFC 算法

TensorFlow 和 PyTorch 都是常用的深度学习框架,各自有一套独特但又相似的 GPU 内存管理机制(BFC 算法)。它山之石可以攻玉。了解 TensorFlow 的 BFC 算法有助于学习 PyTorch 管理 GPU 内存的精妙之处。本文重点关注 TensorFlow BFC 算法的核…

流式输出方案:sse与websocket的使用

1、sse(Server-Sent Events) SSE是一种允许服务器向浏览器推送实时更新的技术。它基于HTTP协议,是一种单向的通信方式 单向通信基于HTTP自动重连(内置了自动重连机制,当连接断开时,浏览器会自动尝试重新连接) 1.1 …

基于定制开发开源AI大模型S2B2C商城小程序的商品选品策略研究

摘要:随着电子商务的蓬勃发展和技术的不断进步,商品选品在电商领域中的重要性日益凸显。特别是在定制开发开源AI大模型S2B2C商城小程序的环境下,如何精准、高效地选择推广商品,成为商家面临的一大挑战。本文首先分析了商品选品的基…

时序论文41 | Medformer:基于多粒度patch的时序分类模型

论文标题:Medformer: A Multi-Granularity Patching Transformer for Medical Time-Series Classification 论文链接:https://arxiv.org/abs/2405.19363 代码链接:https://github.com/DL4mHealth/Medformer. (后台回复“交流”…

建筑兔零基础自学python记录32|学过的函数代码记录19-25

这是之前matplotlib用过的代码记录,以防忘记记录一下: 19.price_data 是一个 NumPy 记录股票数组。每一列可以有不同的数据类型,并且每列都有一个对应的字段名。(类似excel的表中的列) date:存储交易日期&#xff0c…

面试八股文--数据库基础知识总结(2) MySQL

本文介绍关于MySQL的相关面试知识 一、关系型数据库 1、定义 关系型数据库(Relational Database)是一种基于关系模型的数据库管理系统(DBMS),它将数据存储在表格(表)中,并通过表格…

Linux:目录创建命令mkdir功能及用法详解

mkdir是Make Directory的缩写,该命令在 Linux 中用于创建目录(单层或多层),在Linux中很常用,可以说是基础性命令。该命令支持:1)创建单层或多层目录2)直接指定目录权限。本文详细介绍…

2024年国赛高教杯数学建模D题反潜航空深弹命中概率问题解题全过程文档及程序

2024年国赛高教杯数学建模 D题 反潜航空深弹命中概率问题 原题再现 应用深水炸弹(简称深弹)反潜,曾是二战时期反潜的重要手段,而随着现代军事技术的发展,鱼雷已成为现代反潜作战的主要武器。但是,在海峡或…

Visual Studio Code 远程开发方法

方法1 共享屏幕远程控制,如 to desk, 向日葵 ,像素太差,放弃 方法2 内网穿透 ssh 第二个方法又很麻烦,尤其是对于 windows 电脑,要使用 ssh 还需要额外安装杂七杂八的东西;并且内网穿透服务提供商提供的…

SQLite 安装教程以及可视化工具介绍

目录 简述 1. Windows 系统安装 1.1 下载预编译的二进制文件 1.2 解压文件 1.3 配置环境变量 1.4 验证安装 2. GUI 可视化工具 2.1 免费工具 2.1.1 DB Browser for SQLite 2.1.2 SQLiteStudio 2.1.3 SQLite Expert 2.1.4 SQLiteGUI 2.1.5 Antares SQL 2.1.6 DbGa…

smolagents学习笔记系列(五)Tools-in-depth-guide

这篇文章锁定官网教程中的 Tools-in-depth-guide 章节,主要介绍了如何详细构造自己的Tools,在之前的博文 smolagents学习笔记系列(二)Agents - Guided tour 中我初步介绍了下如何将一个函数或一个类声明成 smolagents 的工具&…

LLM2CLIP论文学习笔记:强大的语言模型解锁更丰富的视觉表征

1. 写在前面 今天分享的一篇论文《LLM2CLIP: P OWERFUL L ANGUAGE M ODEL U NLOCKS R ICHER V ISUAL R EPRESENTATION》, 2024年9月微软和同济大学的一篇paper, 是多模态领域的一篇工作,主要探索了如何将大模型融合到Clip模型里面来进一步提…