GridFS

Mongodb 文件存储之 GridFs,

GridFS使用两个集合保存一个文件,fs.files与fs.chunks。可以使用下面的命令查看

show collections

fs.files集合包含了文件的元数据,使用命令查看

db.fs.files.findOne();

列出清单

使用命令查看数据库中的文件的文档

db.fs.files.find()

mongofiles

mongofiles是MongoDB提供的使用GridFS的命令行工具,使用示例如下:

# 格式
mongofiles <options> <command> <filename or _id or string>

# command项
list: 列出指定前缀的文件
search: 列出包含指定字符串的文件
put: 上传文件时指定文件名
put_id: 上传文件时指定文件名和_id
get: 获取指定文件名的文件
get_id: 获取指定_id的文件
delete:删除指定文件名的文件
delete_id: 删除指定_id的文件

上传文件

使用GridFS的put命令保存文件。输入如下的命令,实现文件的上传

mongofiles.exe -d gridfs put E:\elasticsearch-1.7.0.zip
 

下载文件

使用get命令下载文件

mongofiles.exe -d gridfs get E:\elasticsearch-1.7.0.zip

Map Reduce

MongoDB Map Reduce

Aggregate

db.DevLogCollection.aggregate(
   [
     { $match: { Content: /心跳包数据发送/,DateTime:{ "$gt":ISODate("2022-09-14 00:00:00"),"$lt":ISODate("2022-09-15 00:00:00") } } },
     { $group: {  _id : "$DeviceId", counts : {$sum : 1} }  }
   ]
);

正常一天 1440个,超过则应算 2880个;
如果允许最大一天离线1小时,即少60个;

过滤[G2S]需要转义,因为[]在正则中有其含义;

db.DevLogCollection.aggregate(
   [
     { $match: { Content: /^\[G2S\].*心跳包数据发送/,DateTime:{ "$gt":ISODate("2022-09-14 00:00:00"),"$lt":ISODate("2022-09-15 00:00:00") } } },
     { $group: {  _id : "$DeviceId", counts : {$sum : 1} }  }
   ]
);

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐