Mongodb批量删除gridfs文件实例

平台有大量的图片已经不用了,数量级达到百万张,差不多100G的空间,放着不管是不是太浪费了?

代码如下:

db.fs.files.find({filename:/xxx/}).forEach(function(n) {db.fs.files.update({filename:u.filename},{$set:{filename:newname}},false,true)}} //正则批量更改为固定名称,便于删除。
mongofiles -port 12345 -d xxx delete newname //mongofies根据filename批量干掉这些文件。

db.repairDatabase() //特别注意以上删除不是物理删除,chunks文件实际还在,show dbs 或者 db.stats() 发现db的size没有变化,要执行db.repairDatabase();另外注意这个动作是全局写锁,很耗内存和cpu的,而且处理时间跟文件数量大小有关,务必在非高峰期做。

差不多1个多小时后over, 舒坦了,100G空间啊!!!

Be aware that this command can take a long time to run if your database is large. In addition, it requires a quantity of free disk space equal to the size of your database. If you lack sufficient free space on the same volume, you can mount a separate volume and use that for the repair. In this case, you must run the command line and use the –repairpath switch to specify the folder in which to store the temporary repair files.
Warning:This command obtains a global write lock and will block other operations until it has completed.

(0)

相关推荐

  • mongodb+php实现简单的增删改查

    windows上安装mongodb的php扩展 下载地址https://s3.amazonaws.com/drivers.mongodb.org/php/index.html 找到对应的php版本的dll文件,下载php_mongo.dll,放到php安装目录下的ext目录中,修改php.ini,添加一项extension=php_mongo.dll,没有找到支持php7的dll 获取MongoClient对象,new出来 获取数据库对象db,通过MongoClient对象的数据库属性,$Mon

  • MongoDB系列教程(八):GridFS存储详解

    GridFS简介 mongoDB的文档以BSON格式存储,支持二进制的数据类型,当我们把二进制格式的数据直接保存到mongoDB的文档中.但是当文件太大时,例如图片和视频等文件,每个文档的长度是有限的,于是mongoDb会提供了一种处理大文件的规范--GridFS. GridFS实现原理 在GridFS数据库中,默认使用fs.chunks 和fs.files来存储文件,其中fs.files集合存放文件的信息,fs.chunks存放文件的数据,一个fs.files集合中的一条记录内容如下,即一个f

  • MongoDB学习笔记之GridFS使用介绍

    GridFS简介 GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件. GridFS使用 MongoDB提供了一个命令行工具mongofiles可以来处理GridFS, 列出所有文件: 复制代码 代码如下: mongofiles list 上传一个文件: 复制代码 代码如下: mongofiles put xxx.txt 下载一个文件: 复制代码 代码如下: mongofiles get xxx.txt 查找文件: 复制代码 代码如下: //会查找所有文件名中包含"xxx&qu

  • MongoDB错误32-bit servers don't have journaling enabled by default解决方法

    每次启动MongoDB时总是会收到如下 Unclean shutdown 提示,总结了一下出现该问题的原因及解决方法. 提示如下: 复制代码 代码如下: ************** D:\GREENT~1\PowerCmd>mongod --auth -dbpath C:\mongo\MongoDB\mongo\data Wed May 16 16:06:50 Wed May 16 16:06:50 warning: 32-bit servers don't have journaling e

  • C# 对MongoDB 进行增删改查的简单操作实例

    运用到的MongoDB支持的C#驱动,当前版本为1.6.0 下载地址:https://github.com/mongodb/mongo-csharp-driver/downloads 1,连接数据库 复制代码 代码如下: /// <summary>        /// 数据库连接         /// </summary>        private const string conn = "mongodb://127.0.0.1:27017";     

  • MongoDB.NET 2.2.4驱动版本对Mongodb3.3数据库中GridFS增删改查

    本文实例为大家分享了针对Mongodb3.3数据库中GridFS增删改查,供大家参考,具体内容如下 Program.cs代码如下: internal class Program { private static void Main(string[] args) { GridFSHelper helper = new GridFSHelper("mongodb://localhost", "GridFSDemo", "Pictures"); #re

  • PHP MongoDB GridFS 存储文件的方法详解

    <?php //初始化gridfs $conn = new Mongo(); //连接MongoDB $db = $conn->photos; //选择数据库 $grid = $db->getGridFS(); //取得gridfs对象 gridfs有三种方式存储文件 第一种直接存储文件 $id = $grid->storeFile("./logo.png"); 第二种存储文件二进制流 $data = http://www.bkjia.com/PHPjc/get

  • MongoDB插入数据的3种方法

    insert()方法:    下面是在inventory集合中插入一个三个字段的文档:        复制代码 代码如下: db.inventory.insert( { _id: 10, type: "misc", item: "card", qty: 15 } ) 在实示例中,文档有一个用户指定的值为10的_id字段,这个值必须在inventory集合中唯一.update()方法:    调用update()方法使用upsert标志创建一个新文档当没有匹配查询条件

  • PHP简单操作MongoDB的方法(安装及增删改查)

    本文实例讲述了PHP简单操作MongoDB的方法.分享给大家供大家参考,具体如下: php操作MongoDB的话首先从网上下载MongoDB的扩展包,https://github.com/mongodb/mongo-php-driver/downloads,选择对应的扩展包. 这是我下的,然后解压,VC6适合apache,VC9适合IIS,ts(thread safe)指PHP以模块形式运行的. 然后把其中的php_mongo.dll放在PHP中的ext文件夹中,然后在PHP.INI里面加入ex

  • PHP操作MongoDB GridFS 存储文件的详解

    复制代码 代码如下: <?php //初始化gridfs $conn = new Mongo(); //连接MongoDB $db = $conn->photos; //选择数据库 $grid = $db->getGridFS(); //取得gridfs对象 //gridfs有三种方式存储文件 //第一种直接存储文件 $id = $grid->storeFile("./logo.png"); //第二种存储文件二进制流 $data = get_file_cont

随机推荐