MongoDB学习笔记

MongoDB学习笔记

MongoDB 概念解析

SQL术语/概念 MongoDB术语/概念 解释/说明

database database 数据库

table collection 数据库表/集合

row document 数据记录行/文档

column field 数据字段/域

index index 索引

table joins 表连接,MongoDB不支持

primary key primary key 主键,MongoDB自动将_id字段设置为主键

show dbs

local 0.078GB

test 0.078GB
db

test
use local

switch to db local
db.collection.findOne()
db.collection.find()
db.collection.find(query, type)
MongoDB默认将时区设置为格林威治标准时间(GMT),而中国所在的时区是东八区(UTC+8),所以将时间+8小时

var startTime = new Date('2023-10-10 07:30:00')
var endTime = new Date('2023-10-10 19:30:00')

startTime.setHours(startTime.getHours() + 8)
endTime.setHours(endTime.getHours() + 8)

db.collection.find(
    {
        createTime: {
            $gte: startTime,
            $lte: endTime
        }
    }
).sort({
    createTime: -1
})

聚合管道Aggregation.newAggregation操作记录

1、聚合简介

MongoDB中聚合通常用来处理数据,如分组求和、求平均值和排序等,对实现数据复杂操作较为方便,简单来说:聚合就是通过对集合中的数据进行运算,转换为自己需要的形式。

与上篇文章使用MongoTemplate操作数据相比较,Aggregation聚合操作显得更加有优势和便捷,代码清晰简洁,优化查询语句。

2、聚合管道简介

简明:在Linux中,管道一般是将当前命令的执行结果作为下个命令执行的参数。

MongoDB聚合管道:将MongoDB文档在一个管道处理完毕后,将结果传递给下一个管道处理。简单来说:管道就是聚合的整个运算过程。

3、聚合管道常用的表达式(常用)

表达式	    功能	                                等价SQL
$match	    过滤数据,输出符合条件文档	            where
$project    修改输入文档结构(筛选展示文档的键)    个人理解(select)
$limit	    限制计算文档结果返回数	                limit
$sort       文档排序                                order by
$group      文档分组                                group by
$skip       跳过指定数量的文档	                    skip
$unwind     展开数组(数组内容拆分显示)	        无

聚合与sql的对应区别

原生			Java				    SQL                     example

db.collection   Entity.class            from                    db.collection

$match			Aggregation.match		where                   db.collection.aggregate([{ $match: { checkId: { $lt: 10 }}}, { $limit: 10 }])

$project        Aggregation.project     select                  db.collection.aggregate([{ $project: { _id: 1, checkId: 1, teamName: 1 }}, { $limit:100 }])

$group          Aggregation.group       group by                db.collection.aggregate([{ $group : { _id : "$teamName"}}])

$group          Aggregation.group       group by                db.collection.aggregate([{ $group : { _id : "$teamName", mycount : { $sum : 1 }}}])

$group          Aggregation.group       group by 多列分组       db.collection.aggregate([{ $group : { _id : { "teamName": "$teamName","taskName": "$taskName" }, mycount : { $sum : 1 }}}])

$sort           Aggregation.sort        order by                db.collection.aggregate([{ $group : { _id : "$teamName", chmycountckId : { $sum : 1 }}}, { $sort: { chmycountckId: 1 } }]) - 升序

$skip           Aggregation.skip        limit n, m              db.collection.aggregate([{ $group : { _id : "$teamName", mycount : { $sum : 1 }}}, { $sort: { checkId: 1 } }, { $skip: 1 }])

$limit          Aggregation.limit       limit n, m              db.collection.aggregate([{ $group : { _id : "$teamName", mycount : { $sum : 1 }}}, { $sort: { checkId: 1 } }, { $skip: 1 }, { $limit: 10 }])

$count          Aggregation.count       count(*)                直接嵌入到查询的返回{ "$count": "count" }

mongodb使用了JavaScript Shell,加减乘除还有其他啥的查询一些动态值可以通过js的方式进行一些计算,如

var num = Math.random() * 10

db.collection.aggregate([{ $match: { checkId: { $gt: num }}}, { $limit: 10 }])

相关推荐
LuH112424 分钟前
【论文阅读笔记】Learning to sample
论文阅读·笔记·图形渲染·点云
兔C30 分钟前
微信小程序的轮播图学习报告
学习·微信小程序·小程序
海海不掉头发37 分钟前
苍穹外卖-day05redis 缓存的学习
学习·缓存
小木_.2 小时前
【Python 图片下载器】一款专门为爬虫制作的图片下载器,多线程下载,速度快,支持续传/图片缩放/图片压缩/图片转换
爬虫·python·学习·分享·批量下载·图片下载器
一棵开花的树,枝芽无限靠近你2 小时前
【PPTist】组件结构设计、主题切换
前端·笔记·学习·编辑器
犬余2 小时前
设计模式之桥接模式:抽象与实现之间的分离艺术
笔记·学习·设计模式·桥接模式
啊瞑3 小时前
学习记录:配置mybatisplus的分页查询插件,mybatis-plus-jsqlparser 依赖
学习
码到成龚3 小时前
SQL server学习09-数据库编程(上)
数据库·学习
数据爬坡ing3 小时前
小白考研历程:跌跌撞撞,起起伏伏,五个月备战历程!!!
大数据·笔记·考研·数据分析
咖肥猫3 小时前
【ue5学习笔记2】在场景放入一个物体的蓝图输入事件无效?
笔记·学习·ue5