2009-08-21 5 views
2

Ich möchte eine Rake-Aufgabe einrichten, um meine CouchDB mit Fixtures zu füllen und die Daten in der Datenbank zuerst loszuwerden. Ein gutes Beispiel für die gesamte Prozedur mit MySQL finden Sie here. Dieses Beispiel enthält den folgenden Teil der Daten des Modells in der MySQL-Datenbank zu löschen:Model based Löschen von CouchDB Daten in 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}") } 

Was wäre das Äquivalent für CouchDB sein? Muss ich einen komplett anderen Ansatz wählen, da dieses Konzept, das für relationale Datenbanken eingerichtet wurde, nicht auf dokumentorientierte Datenbanken angewendet werden kann?

Vielen Dank im Voraus!

Antwort

1

Es gibt keine Tabellen und Schemata, also nichts zu verkürzen. Sie sollten stattdessen Dokumente löschen. Es ist jedoch unmöglich, Dinge wie "Löschen von" zu tun, also sollten Sie Dokumente abrufen und sie dann mit HTTP Bulk Document API löschen.

Ich denke, Sie brauchen das für die Entwicklungsumgebung, also sollte es nicht viele Dokumente geben und diese Lösung wird akzeptabel sein.

Auch Sie können erste Bündel Dokumente, Massen löschen und dann einen weiteren Haufen von Dokumenten, etc ... Wiederholen Sie für jedes Modell. Ich hoffe das hilft.

0

Ich denke, der einfachste Weg, um alle Dokumente in Ihrer Datenbank loszuwerden, ist einfach die Datenbank löschen und dann neu erstellen. Löst das dein Problem? Wahrscheinlich möchten Sie eine Offlinekopie der Designdokumente haben, damit Sie diese nach dem erneuten Erstellen wieder einfügen können.

Mir ist keine Möglichkeit bekannt, Dokumente aus einer CouchDB-Datenbank zu löschen.

Ah - also möchten Sie nur die Dokumente eines bestimmten Modells löschen? In diesem Fall denke ich, dass Sie über eine Ansicht (entweder eine bestimmte Ansicht, die über Dokumente, die zu diesem Modell gehören, oder _all_docs) iterieren und ein Dokument nach dem anderen löschen können.

+0

Sorry, aber ich denke, nichts davon ist wirklich hilfreich/korrekt. – konrad

+0

Okay ... Habe ich deine Frage falsch verstanden? Wenn nicht, warum denkst du, dass ich falsch liege? – djc