mongo简介
百度百科上的介绍:MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
为啥用捏
其实还是因为之前做的一个功能,涉及到的数据量比较大,存在数据库中用sql查询执行起来很慢很慢,优化之后还是很慢。具体可以参考我写的那篇sql优化的文章,是的~大概半年前的一个功能了,由于优先级是最低的,所以到现在才去优化和总结,我是有够懒的啦。不过最后还是做了,成功将数据从pg转到mongo了,在实现复杂查询的时候也是费了一下小劲呢,所以总结下来供以后来回顾一下。
正题
之前的业务数据存入数据库之后还要关联其他的表去做一个关联查询,由于也没打算把那些数据再放mongo里面一份,所以设计数据结构的时候也就把关联的字段在代码中处理了一下全都放到一个json里面了。差不多就那样子,这样就不需要设计联表查询,只需要对这个collection进行操作就行啦。
{
"_id" : NumberInt(2),
"id" : NumberInt(2),
"cameraName" : "测试点", //设备名称
"clientIp" : "0.0.0.0",
"endTime" : NumberLong(20191217102949),
"status" : NumberInt(2), //取流状态 0:正在取流 2 取流结束 1 取流异常
"retrivalDuration" : NumberLong(200),
"createTime" : "2020-02-18 16:46:27",
"provinceCode" : "360112", //行政区划编码
"eurl" : "rtsp://10.5.160.103:655/Eurl/qEPs1Km", //短连接
"longurls" :"rtsp://10.17.10.21:655/0",
"clientType" : "BROWSER", //客户端类型
"cascadeType" : NumberInt(0), //("所属域 0:本级 1:下级 2:上级 3:中间")
"userId" : "test",
"playType" : "playback", //playback ,realplay 播放类型
"startTime" : NumberLong(20191217102749),
"upCascadeIndexCode" : "36010000002000000088", //上级域编号,
"downCascadeIndexCode" : "36010000002000000088", //下级域编号
"cameraIndexCode" : "36011240201310084354", //点位编号
"sessionId" : "21312xada", //会话id
"mediaIndexCode" : "3601124020131002321", //媒体编号
"msgType" : NumberInt(0