Frage

Ich habe zwei Datenbanken in CouchDB - DB1 Die Dokumente sind Benutzerdaten - Name, E-Mail-Adresse, Benutzername, Passwort, aber innerhalb eines Feldes, dass ich eine Liste der ID-Store in DB2 gespeichert, in dem Benutzer Projekte gespeichert werden (einen Benutzername Feld enthalten, und einige Textfelder.

    Example DB1 Document (Users)

       {
   "_id": "bobsmith1000",
   "_rev": "83-1e00173cac0e736c9988d3addac403de",
   "first_name": "Bob",
   "password": "$2a$12$sdZUkkyDnDePQFNarTTgyuUZS6DL13JvBk/k9iUa5jh08gWAS5hpm",
   "second_name": "Smith",
   "urls": null,
   "email": "bob@smith.com",
   "projects": [
       "ee5ccf56da22121fd71d892dbe051746",
       "ee5ccf56da22121fd71d892dbe0526bb",
       "ee5ccf56da22121fd71d892dbe053433",
       "ee5ccf56da22121fd71d892dbe056c71",
       "ee5ccf56da22121fd71d892dbe0579c3",
       "ee5ccf56da22121fd71d892dbe05930d"
   ]
}

Example DB2 Document (Projects)

{
   "_id": "ee5ccf56da22121fd71d892dbe05930d",
   "_rev": "1-c923fbe9de82318980c7778c4c089321",
   "url": "http://harkmastering.s3.amazonaws.com/testprojects/testfolder.zip",
   "username": "bobsmith1000",
   "time": "2010-10-29 07:13:47.377085",
   "file_size": "5.2 MB"
}

Ich versuche, einen Blick in Python zu schreiben (mit dem Flask Web-Framework und Python CouchDB-Bibliothek), die DB1 überprüfen wird, werden alle Projekt-IDs greifen, und gehen Sie dann zu db2 und in einer Batch-Weise ausziehbares die URL, Zeit , Dateigröße für jedes Dokument mit Matching-IDs, so kann ich die Daten in einer Tabelle platzieren kann.

Ich begann erst frühe Programmierung in diesem Jahr und dies beinhaltet Techniken, dass ich nur vorstellen kann. Kann mir jemand helfen, eine Lösung finden?

Mit freundlichem Dank

War es hilfreich?

Lösung

Wenn Sie gute Gründe haben Ihre Dokumente in verschiedenen dbs zu spalten, scheint wie nicht der Fall ist, nach Ihrer Frage, sie man sie alle auf der gleichen Datenbank behalten sollte, und eine Eigenschaft auf die Dokumentation, um ihre Art zu identifizieren ( wie ein "Typ: user" und "Typ: Projekt")

.

So kann man das gewünschte Ergebnis auf einer einzigen couchdb Ansicht ohne allzu viel Mühe bekommen. Ihrer Ansicht Map-Funktion werden Sie brauchen nur Tasten wie [ „username“, 0] und [ „username“, „Projektname“] zu emittieren. In JavaScript, das wäre:

function(doc) {
 if (doc.type == "user") {
  emit([doc._id,0],null);
 } else if(doc.type == "project") {
  emit([doc.username,doc._id],null);
 }
}

Them können Sie diese Ansicht abfragen und eine organisierte Gruppe von Dokumenten haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top