• 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
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    聚合管道Aggregation.newAggregation操作记录

    1、聚合简介
    MongoDB中聚合通常用来处理数据,如分组求和、求平均值和排序等,对实现数据复杂操作较为方便,简单来说:聚合就是通过对集合中的数据进行运算,转换为自己需要的形式。
    与上篇文章使用MongoTemplate操作数据相比较,Aggregation聚合操作显得更加有优势和便捷,代码清晰简洁,优化查询语句。

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

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

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

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

    聚合与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" }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    mongodb使用了JavaScript Shell,加减乘除还有其他啥的查询一些动态值可以通过js的方式进行一些计算,如
    var num = Math.random() * 10
    db.collection.aggregate([{ $match: { checkId: { $gt: num }}}, { $limit: 10 }])

  • 相关阅读:
    “Alibaba Druid 未授权访问” 安全漏洞
    2022年,有哪些适合普通人的风口项目?
    java基础 io流 字节流 字符流 节点流 包装流 转换流 缓冲流 对象流 打印流 Properties类
    皮肤性病科专家谭巍主任提出HPV转阴后饮食七点建议
    jmeter脚本开发
    Unity中Shader光照模型Phong
    纯前端Vue实现Todo_list备忘录及导航案例
    geoserver的ECQL查询
    TQ210-Bootloader-Uboot(LTS)
    计算机视觉驾驶行为识别应用简述
  • 原文地址:https://blog.csdn.net/qq_27577113/article/details/133815697