MongoDB查询操作

news2024/10/18 16:24:27

🌷启动mongo

🎈启动mongo shell

(1)在指定目录下创建mongodb文件夹、其子文件夹data、log以及文件mongodb.log

cd /home/ubuntu
mkdir -p mongodb/data
mkdir -p mongodb/log
touch mongodb/log/mongodb.log

(2)先执行mongodb命令以启动mongodb服务

mongod --dbpath /home/ubuntu/mongodb/data --logpath /home/ubuntu/mongodb/log/mongodb.log --logappend --fork

(3)进入mongo shell

mongosh

🎈使用test数据库,并新建items集合,保存订单相关信息

use test
db.createCollection("items")

🎈批量插入文档数据

每个文档对应订单某个商品相关信息,包括:

  • pnumber:商品编号

  • quantity:商品数量

  • price:商品单价

插入如下商品信息:

db.items.insertMany([
  { quantity: 2, price: 5.0, pnumber: 'p003' },
  { quantity: 2, price: 8.0, pnumber: 'p002' },
  { quantity: 1, price: 4.0, pnumber: 'p002' },
  { quantity: 2, price: 4.0, pnumber: 'p001' },
  { quantity: 4, price: 10.0, pnumber: 'p003' },
  { quantity: 10, price: 20.0, pnumber: 'p001' },
  { quantity: 10, price: 20.0, pnumber: 'p003' },
  { quantity: 5, price: 10.0, pnumber: 'p002' },
])

🌷查询 

🎈查询结果

使用find({})方法显示所有文档

统计items共有多少个文档数据

db.items.countDocuments()

大于使用gt操作符,另外操作符前面要带上$符号

查询价格大于5的商品

db.items.find({ price: { $gt: 5 } })

  

🌷多条件查询 

例:查询数量quantity为10且价格price大于等于5的商品数据

db.items.find({ quantity: 10, price: { $gte: 5 } })

例:查询价格大于5小于7的商品 

db.items.find({ price: { $gt: 5 , $lt: 7} })

🎈使用or来进行条件查询

语法格式如下:

db.col.find({ $or: [{ key1: value1 }, { key2: value2 }] })

例:查询数量quantity为10或价格price大于等于5的商品数据

db.items.find({ $or: [{ quantity: 10 }, { price: { $gte: 5 } }] })

 

 🎈AND和OR联合使用

例:查询编号pnumber为“p003”且数量quantity为10或价格大于等于5的商品数据

db.items.find({ pnumber: 'p003', $or: [{ quantity: 10 }, { price: { $gte: 5 } }] })

🎈使用聚合aggreate

例:统计订单中所有商品的数量,即统计数量quantity的总和

db.items.aggregate([{ $group: { _id: null, total: { $sum: '$quantity' } } }])

例:通过产品类型来进行分组,然后再统计卖出的数量

db.items.aggregate([{ $group: { _id: '$pnumber', total: { $sum: '$quantity' } } }])

例:通过相同的产品类型来进行分组,然后查询相同产品类型卖出最多的订单详情

db.items.aggregate([{ $group: { _id: '$pnumber', max: { $max: '$quantity' } } }])

 例:通过相同的产品类型来进行分组,然后查询每个订单详情相同产品类型卖出的平均价格

db.items.aggregate([{ $group: { _id: '$pnumber', price: { $avg: '$price' } } }])

🎈管道的使用

例:通过相同的产品类型来进行分组,统计各个产品数量,然后获取最大的数量

db.items.aggregate([{ $group: { _id: '$pnumber', total: { $sum: '$quantity' } } }, { $group: { _id: null, max: { $max: '$total' } } }])

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《计算机视觉》—— 疲劳检测

文章目录 一、疲劳检测实现的思想二、代码实现 一、疲劳检测实现的思想 了解以下几篇文章有助于了解疲劳检测的方法 基于dlib库的人脸检测 https://blog.csdn.net/weixin_73504499/article/details/142977202?spm1001.2014.3001.5501 基于dlib库的人脸关键点定位 https://blo…

基于开源Jetlinks物联网平台协议包-MQTT自定义主题数据的自动回复

目录 1.根据需要自动回复某些主题 2.调用doReply方法进行自动回复 1.根据需要自动回复某些主题 根据主题判断,哪些主题是需要自动回复的,比如设备登录,需要自动回复。 2.调用doReply方法进行自动回复(代码不一定全部正确&#xf…

第 5 章:vuex

1. 理解 vuex vuex 是什么: 概念:专门在 Vue 中实现集中式状态(数据)管理的一个 Vue 插件,对 vue 应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式&am…

安乃达:用CRM构建从销售到管理到售后的全链路数字化运营平台

安乃达驱动技术(上海)股份有限公司((简称:“安乃达”,股票代码为:“603350”))自2011年以来,公司通过多年的研发与积累现有直驱轮毂电机、减速轮毂电机和中置电机三大系列产品,并具备与电机相匹配的控制器、传感器、仪表等电驱动成…

springboot旧物置换网站

作者:计算机学长阿伟 开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。 系统展示 【2024最新】基于JavaSpringBootVueMySQL的,前后端分离。 开发语言:Java数据库:MySQL技术:…

ThinkPHP 3.2 + Nginx 页面404问题

学习公司Callout项目时,发现公司项目所使用的TP版本是3.2,所以才可以使用例如,C,M,A等方法 因此我用phpEnv搭建了一个项目,域名为thinkphp,所选根目录如下 我打开网页,访问 thinkphp/ 和 thinkphp/index.p…

ROS 的 urdf 中 link 和 joint 的子标签中 origin 的含义

主要参考文章——主要文章,官方关于urdf的介绍和官方文档的翻译解析 link标签里面的origin含义 link标签里面有三个主要的子标签,分别是visual——连杆的外观和坐标系,collisoin——连杆的碰撞属性和inertial——连杆的惯性设置 首先&…

C++ | AVL树

前言 本篇博客讲解c中数据结构AVL树,看这篇博客之前请先去看:C | 二叉搜索树-CSDN博客 💓 个人主页:普通young man-CSDN博客 ⏩ 文章专栏:C_普通young man的博客-CSDN博客 ⏩ 本人giee: 普通小青年 (pu-tong-young-m…

2024最新:零基础到精通的大模型AI产品经理全学习路线

随着人工智能技术的发展,尤其是大模型(Large Model)的兴起,越来越多的企业开始重视这一领域的投入。作为大模型产品经理,你需要具备一系列跨学科的知识和技能,以便有效地推动产品的开发、优化和市场化。以下…

第51期 C语言实现中断<一>

Q:怎样理解用C语言实现中断的过程呢? A:以下是一段使用C语言实现中断的主程序,和汇编语言实现中断一样也使用了定时器中断和按键中断。执行该主程序会在DE2-115的红色LED上显示流水灯,按下KEY1可以改变流水灯移动的…

FreeRTOS - 任务通知

1. 任务通知 所谓"任务通知",你可以反过来读"通知任务"。 我们使用队列、信号量、事件组等等方法时,并不知道对方是谁。使用任务通知时,可以明确指定:通知哪个任务。 使用队列、信号量、事件组时&#xff…

【DBA Part01】国产Linux上安装Oracle进行数据迁移

内容如下: 1.1.生产环境RHEL/OEL Linux8Oracle11gR2安装配置 1.2.国产麒麟操作系统Oracle11gR2安装配置 1.3.国产麒麟操作系统Oracle11gR2 RAC集群安装配置 1.4.Oracle11gR2迁移到国产麒麟操作系统(单机/RAC) 本阶段课程项目需求说明&am…

[C++刷题] 基础小知识点(1) 乘方函数pow()

乘方 pow() 该函数在math.h头文件中 例如: 求圆的面积公式 s3.14*pow(r,2); 也可用于开方 pow(4,1.0/3) 注意这里要写1.0, 不然1/30,该函数会失效 例题: #include<iostream> using namespace std; #include<math.h>) int main() {int h;int r;cin >> h &g…

c++算法第3天

本篇文章包含三道算法题&#xff0c;难度由浅入深&#xff0c;适合新手练习哟 目录 第一题 题目链接 题目解析 代码原理 代码编写 本题总结 第二题 题目链接 题目解析 代码原理 代码编写 第三题 题目链接 题目解析 代码原理 代码编写 第一题 题目链接 [NOIP2…

ai抠图软件哪个好?一些快速掌握的基本抠图技巧,学习

有谁和小编一样&#xff0c;不修图还好&#xff0c;一要修图&#xff0c;100%会踩坑&#xff01; 没错&#xff0c;就是踩了网页上各种ai抠图软件免费版广告的坑&#xff0c;抠图不干净就算了&#xff0c;还会损坏原来的图片文件就很过分&#xff01; 伤心事不再多说&#xff0…

Junit单元测试时提示:Method should have no parameters

场景 Junit中运行单元测试时提示&#xff1a; Method XXX should have no parameters 如图&#xff1a; 代码如下&#xff1a; package com.ws.test.common;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extensi…

软考倒计时!中项计算题带练来啦!

已经进入下半年软考最后一个月&#xff0c;各位小伙伴的软考复习也已经来到了最后冲刺阶段&#xff0c;大家在知识点的背诵同时也别忽略计算题的练习&#xff0c;那么和小编一起来中项计算题的跟练吧&#xff01; 01、试题一 某信息系统项目包含如下 A、B、C、D、E&#xff0c…

Helm入门到实战演示

目录 1、Helm介绍 2、Helm v3版本变化 3、安装Helm v3 4、配置国内存放chart仓库的地址 5、Helm基本使用 5.1 搜索和下载Chart 5.2 部署chart 5.2.1 helm部署memcached服务 5.3 release相关操作 6、自定义Chart模板 6.1 自定义一个Chart 6.2 Chart.yaml编写规则 6.…

字节撒钱啦,快来薅羊毛!!!!!!!!!!!!!!!!

豆包MarsCode是给开发用的一款智能助手&#xff0c;能够实现代码智能补全、AI问答、智能测试等功能。 目前有一个推广活动&#xff0c;体验送10火星币&#xff0c;邀请一个新用户得10火星币&#xff0c;20个火星币就可以获得20京东E卡&#xff0c;隔日到账。 整个过程10分钟不…

STM32CUBEIDE的使用【三】RTC

于正点原子潘多拉开发板&#xff0c;使用stm32官方免费软件进行开发 CubeMx 配置 使用CubeMx 配置RTC 勾选RTC 设置日期和时间 配置LCD的引脚用来显示 STM32CUBEIDE 在usbd_cdc_if.c中重定向printf函数用于打印 #include <stdarg.h>void usb_printf(const char *f…