Mongodb 文件存储之 GridFs,
GridFS使用两个集合保存一个文件,fs.files与fs.chunks。可以使用下面的命令查看
show collections
fs.files集合包含了文件的元数据,使用命令查看
db.fs.files.findOne();
列出清单
使用命令查看数据库中的文件的文档
db.fs.files.find()
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
MongoDB Map Reduce
- 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} } }
- ]
- );