一、概述

        基于mongodb的tcp连接无数据上报,服务器强踢监测。

        物联网项目,tcp协议,基于4G卡,设备由于某些原因会断开重连,但是tcp没有断开,导致tcp持续累加,浪费资源。

        建立机制: 当tcp超过3分钟没有数据交互时,服务器强踢。

        数据存储: 数据交互时需要更新最新的时间,写多读少,而且服务重启后tcp均会断开,用MySQL不划算;而mongodb的写性能还不错,就用mongodb了

二、部署

        基于docker部署,用的是bitnami/mongodb:7.0.14

        docker镜像来源: windows + docker 桌面 + 子 + 镜像search + 镜像pull + 镜像save

1、docker启动命令

docker run --name mongodb --restart=always -v /opt/mongodb/data:/data/db -p 0.0.0.0:27017:27017 -d bitnami/mongodb

三、常用命令

1、创建索引

db.tcp_link.createIndex({clientIp:1}); db.tcp_link.createIndex({iccid:1}); db.tcp_link.createIndex({serverIp:1}); db.tcp_link.createIndex({latestDataTime:1, weatherOnline: 1, serverIp: -1});

说明: db关键字,固定

tcp_link: 集合名称(表明)

clientIp: 字段

1: 排序(降序)

~~

 2、分组统计

db.tcp_link.aggregate([ { $group: { _id: "$weatherOnline", // 分组依据字段 count: { $sum: 1 } // 统计每个组的数量 } } ]);

说明: db,aggregate都是关键字

weatherOnline: 字段

~~

 四、其他

1、基础概念

1)数据库,与MySQL差不多;不同的是,mongo建库更简单

2)集合,就是表

3)字段,就是字段;mongo支持动态字段,不需要提前定义,用哪些直接entity加字段即可

4)文档,就是一条记录