12

GridFSを使用してMongoDBにファイルを保存しています。これらのファイルのいくつかを、JavaScriptシェルからIDで削除する必要があります。IDを使用して1つのファイルを削除する必要があります。私はこれができると思った:

db.fs.files.remove({_id: my_id});

これはある程度機能します。コレクションからファイルを削除しますが、fs.filesコレクションからチャンク自体は削除しませんfs.chunks。それを知っているのは、RockMongoで前後の両方のコレクションの長さをチェックしているからです。

チャンクを調べて、そのファイルを参照しているチャンクを削除することはできますが、それを行うためのより優れた組み込みの方法はありますか?

4

3 に答える 3

23

シェルからチャンクとファイルの両方を削除することで、gridFSファイルを削除できます。例えば

db['fs.chunks'].remove({files_id:my_id});
db['fs.files'].remove({_id:my_id});

それらのコマンドはそのようなトリックを行います。

于 2013-11-19T05:25:30.123 に答える
14

代わりに使用しdb.fs.delete(_id);ます。

更新 申し訳ありませんが、それは明らかにシェルからは機能せず、ドライバーを介してのみ機能します。GridFSは、ドライバーによって実装されるストレージの仕様です。シェル自体には多くの機能が組み込まれていないようです。

アップデート2コマンドラインツールmongofiles(http://www.mongodb.org/display/DOCS/GridFS+Tools )もあり、名前でファイルを削除できます。mongofiles delete <filename>。その名前のすべてのファイルが削除されるという警告が表示されるため、idほど詳細ではありません。

于 2012-01-09T20:37:47.170 に答える
3
mongofiles --host localhost:30000 --db logo delete logo_susan1225.png

このページを参照してください:http: //docs.mongodb.org/manual/reference/program/mongofiles/#bin.mongofiles

于 2013-05-14T07:58:39.203 に答える