12
votes

Mongodb Retirez les objets de gridfs de Shell

J'ai des fichiers stockés dans un MongoDB à l'aide de gridfs. J'ai besoin de supprimer certains de ces fichiers par ID, à partir de la coque JavaScript. Je dois supprimer un seul fichier en utilisant son identifiant. Je pensais que je pouvais juste faire ceci: xxx

cela fonctionne dans une certaine mesure; Il supprime le fichier de la collection fs.files mais ne supprime pas les morceaux de la collection fs.chunks . La raison pour laquelle je sais que c'est parce que je vérifie la longueur des deux collections avant et après, à Rockmongo.

Je pourrais parcourir les morceaux et supprimer ceux qui font référence à ce fichier, mais y a-t-il un meilleur, construit -Donne façon de faire ça?


0 commentaires

3 Réponses :


14
votes

Vous voulez utiliser db.fs.delete (_ID); à la place.

mise à jour Désolé, cela ne fonctionne apparemment pas de la coquille, uniquement à travers le conducteur. GridFS est une spécification de stockage mise en œuvre par les pilotes. On dirait qu'il n'a pas beaucoup de fonctionnalités intégrées de la coquille, en tant que telle.

update 2 Il existe également un outil de ligne de commande, Mongofiles ( http: // www.mongodb.org/display/docs/gridfs+Tools ), qui vous permet de supprimer des fichiers par nom . Mongofiles Supprimer . Il vient avec un avertissement qu'il supprimera tous les fichiers par ce nom, il n'est donc pas aussi granuleux que par ID.


3 commentaires

Ah, je vois. Malheureusement, je ne peux pas utiliser Mongofiles car je n'ai que l'identifiant du fichier que je veux supprimer. Prévoyez-vous des problèmes que je voudrais me faire en supprimant moi-même les morceaux correspondants?


Avez-vous besoin de faire cela à travers la coquille? Pourquoi ne pas se connecter à un pilote dans votre langue de choix? Et non, aussi loin que je sais que ce serait bien de faire quelque chose comme db.fs.chunks.remove ({fichiers_id: my_id}); , puis db.fs.files.remove ({_ID: my_id});


J'aurais préféré le faire de la coquille mais je vais utiliser une langue avec un conducteur. Merci!



3
votes
mongofiles --host localhost:30000 --db logo delete logo_susan1225.png
refer to this page:
http://docs.mongodb.org/manual/reference/program/mongofiles/#bin.mongofiles

0 commentaires

23
votes

Vous pouvez supprimer le fichier de gridfs en supprimant les morceaux et les fichiers de Shell. Par exemple

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


0 commentaires