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

MongoDB查询操作

🌷启动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.mrgr.cn/news/51934.html

相关文章:

  • 常见Elasticsearch 面试题答案详细解析(下)
  • 创建uniCloud新项目并且是新服务空间,运行会报Error: Invalid uni-id config file错误
  • 如何做好项目管理,实现高效协作?
  • Socket 网络编程与 C# 中的应用实例
  • 安装vue发生异常: idealTree:nodejs: sill idealTree buildDeps
  • FreeRTOS——中断管理
  • 15分钟学Go 第3天:编写第一个Go程序
  • 常见网络钓鱼类型
  • 多模块存储器相比单模块有哪些显著优势
  • 【学术前沿】PATHWAYS:谷歌大规模异构计算编排调度系统(Jeff Dean 和 Sanjay Ghemawat联合出品)
  • MacOS虚拟机安装Windows停滞在“让我们为你连接到网络”,如何解决?
  • IDEA中文乱码�
  • 轻松备考!这款 AI 工具助你高效复习 AP、IB 和 A-Leve
  • Nature子刊排名
  • iOS GCD的基本使用
  • FreeMarker模板引擎入门:从基础到实践的全面指南
  • CesiumJS 案例 P4:创建三角形、创建多边形、创建折线、创建盒子、创建圆柱
  • 【SAM模型应用于遥感影像|论文解读3】突破边界与一致性:SAM模型革新遥感影像语义分割
  • React状态管理工具zustand
  • Android开发跳去应用市场评分功能