美文网首页
10-Mongodb 节点查询、聚合查询及类型转换

10-Mongodb 节点查询、聚合查询及类型转换

作者: 过桥 | 来源:发表于2020-11-04 15:49 被阅读0次

    1、需求背景

    数据结构如下

    {
        "_id": ObjectId("5df397720c562263dcad6e36"),
        "DataGatherCode": "xxxxxxxxxxxxxxx",
        "MonitorTime": ISODate("2019-12-13T13:50:41.000Z"),
        "Type": "RealTimeData",
        "DataList": [
            {
                "PollutantCode": "001",
                "AvgStrength": "100.0000"
            },
            {
                "PollutantCode": "002",
                "AvgStrength": "999999"
            }]
          ...
    }
    ...
    

    查询大于指定值的监测数据

    2、查询方式一,子节点查询

    db.getCollection("空间").find({
        "MonitorTime": {
            $gte: ISODate("2019-12-11T12:10:30.000+0800"),
            $lte: ISODate("2019-12-31T12:40:30.000+0800")
        },
        "DataList": {
            "$elemMatch": {
                "AvgStrength": {  $gt: '18' }
            }
        }
    })
    

    直接使用elemMatch查询子节点,但因节点中数据类型为字符串,不满足需求,如类型一致可直接使用,直接明了

    3、查询方式二,聚合,统计,类型转换

    db.getCollection("空间").aggregate([
        {
            $match: {
                "MonitorTime": {
                    $gte: ISODate("2019-12-11T12:10:30.000+0800"),
                    $lte: ISODate("2019-12-18T12:40:30.000+0800")
                }
            }
        },
        {
            $unwind: "$DataList"
        },
        {
            $project: {
                "序列号": "$DataGatherCode",
                "监测时间": {
                    $dateToString: {
                        format: "%Y-%m-%d %H:%M:%S:%L",
                        date: "$MonitorTime",
                        timezone: "+08"
                    }
                },
                "监测项目": "$DataList.PollutantCode",
                "监测值": {
                    $toDouble: "$DataList.AvgStrength"
                }
            }
        },
        {
            $match: {
                "监测值": {
                    $gt: 18
                }
            }
        }
    ])
    

    先大范围过滤数据,再提取子节点数据并转型,最后进行指定值过滤

    相关文章

      网友评论

          本文标题:10-Mongodb 节点查询、聚合查询及类型转换

          本文链接:https://www.haomeiwen.com/subject/jfugvktx.html