2009-08-21 8 views
2

Je veux mettre en place une tâche rake pour remplir mon CouchDB avec des données d'appareils et je dois d'abord me débarrasser des données dans la base de données. Un bon exemple pour toute la procédure utilisant MySQL peut être trouvé here. Cet exemple contient la partie suivante pour supprimer les données du modèle dans la base de données MySQL:Suppression basée sur le modèle des données CouchDB dans Rails

# the list of models (pluralized) you want to import, in order 
models = ['Cities','Neighborhoods','Shops','Reviews'] 

# truncate existing tables 
models.reverse.each { |model| ActiveRecord::Base.connection.execute("truncate table #{model.underscore}") } 

Quelle serait l'équivalent pour CouchDB? Dois-je adopter une approche complètement différente, car ce concept mis en place pour les bases de données relationnelles ne peut pas être appliqué aux bases de données documentaires?

Merci beaucoup d'avance!

Répondre

1

Il n'y a pas de tables et de schéma, donc rien à tronquer. Vous devriez supprimer les documents à la place. Mais il est impossible de faire des choses comme "supprimer de", donc vous devriez récupérer des documents et ensuite les supprimer en utilisant HTTP Bulk Document API. Je suppose que vous en avez besoin pour l'environnement de développement, donc il ne devrait pas y avoir beaucoup de docs et cette solution sera acceptable.

Vous pouvez également obtenir d'abord des documents groupés, supprimer en bloc et puis obtenir un autre groupe de documents, etc ... Répétez pour chaque modèle. J'espère que ça aide.

0

Je pense que la façon la plus simple de se débarrasser de tous les documents de votre base de données est de simplement supprimer la base de données, puis de la recréer. Cela résout-il votre problème? Vous voudrez probablement avoir une copie hors ligne des documents de conception afin que vous puissiez les remettre après la recréation.

Je ne connais aucun moyen de supprimer en bloc des documents d'une base de données CouchDB. Ah - donc vous voulez supprimer seulement les documents appartenant à un modèle spécifique? Dans ce cas, je pense que vous devrez itérer sur une vue (soit une vue spécifique qui itère sur les documents appartenant à ce modèle ou _all_docs) et supprimer un document à la fois.

+0

Désolé, mais je pense que rien de tout cela n'est vraiment utile/correct. – konrad

+0

Ok ... Ai-je mal compris votre question? Si non, pourquoi penses-tu que je me trompe? – djc

Questions connexes