Seite 1 von 1

Document Mapping in CouchDB-Python

Verfasst: Samstag 3. Dezember 2011, 16:44
von burli
Hi,
ich möchte ein bestimmtes Dokument (Document mapping) aus der Datenbank laden. Dazu habe ich ein Objekt erstellt. Die einzige Möglichkeit, dieses Dokument zu laden ist offensichtlich mit document.load(db, document.id)

Ich brauche also die ID. Wenn ich die automatisch generierte ID verwenden möchte muss ich also zunächst mit einem View zum Beispiel nach dem gewünschten Namen suchen, die ID ermitteln und dann kann ich das Dokument laden. Die (einzige) andere Möglichkeit wäre, den Namen als ID zu verwenden.

Sehe ich das richtig? Oder gibt es noch andere Möglichkeiten?

Re: Document Mapping in CouchDB-Python

Verfasst: Sonntag 4. Dezember 2011, 19:46
von noisefloor
Hallo,

ohne ID kommst du an kein Dokument in CouchDB, jedenfalls wüsste ich nicht, wie.

Gruß, noisefloor

Re: Document Mapping in CouchDB-Python

Verfasst: Sonntag 4. Dezember 2011, 22:56
von burli
Na sicher, über Views. Man kann auch in Dokumenten Views benutzen (ViewField), aber so wie es aussieht nur temporäre und damit langsame Views. Ich habe zumindest noch nicht herausgefunden, wie man gespeicherte Views mit Dokumenten nutzen kann.

Re: Document Mapping in CouchDB-Python

Verfasst: Montag 5. Dezember 2011, 07:57
von noisefloor
Hallo,

ja klar. Wobei du ja dann über alle Dokumente iterierst (bzw. der View macht das), und du bekommst dann die ID so.

Views in Dokumenten habe ich noch nichg benutzt bzw. ich meine, ich hätte das auch noch nie gesehen. Da muss ich mal ins schlaue CouchDB Buch schauen, solange ich es noch habe. :-)

Gruß, noisefloor

Re: Document Mapping in CouchDB-Python

Verfasst: Montag 5. Dezember 2011, 08:03
von burli
Wie gesagt, bisher konnte ich nur temporäre Views für Dokumente finden.

Re: Document Mapping in CouchDB-Python

Verfasst: Montag 5. Dezember 2011, 15:43
von Drache
Hallo burli,

hast du die temporären views mal gespeichert ?
Mal mit startkey und endkey experimentiert (gegebenfalls auch key).

Schreib doch mal ein mini Programm für dein Problem, vielleicht kann ich dir helfen.

Drache

Re: Document Mapping in CouchDB-Python

Verfasst: Montag 5. Dezember 2011, 20:56
von noisefloor
Hallo,

@burli: Ich habe nochmal über den Problem nachgedacht. Du brauchst die ID. Punkt. Wie du dran kommst, ist was anderes. Die ID ist in CouchDB das einzige fixe und einmalige Merkmale. Der Rest ist bekanntlich schemalos. Auch wenn du darüber prinzipiell weitere einmalige Merkmale erstellen könntest.

Gruß, noisefloor

Re: Document Mapping in CouchDB-Python

Verfasst: Montag 5. Dezember 2011, 22:35
von burli
Ich verwende jetzt einfach den Usernamen als ID. Der ist eindeutig und damit funktioniert es.

Re: Document Mapping in CouchDB-Python

Verfasst: Dienstag 13. Dezember 2011, 19:31
von burli
Ich habe gerade festgestellt, dass man keine Funktion in ein ViewField eintragen muss

Code: Alles auswählen

class Content(Document):
    doc_type = 'content'
    
    title = TextField()
    content = TextField()
    by_title = ViewField('content', ''' ''')    

content_by_title = ViewDefinition('content', 'by_title', '''
    function(doc) {
        if (doc.doc_type == 'content'){
        emit(doc.title, doc);
        }
    }''')

couch_manager.add_viewdef((content_by_title))
Man kann eine ViewDefinition permanent speichern und anschließend trotzdem mit Content.by_title() darauf zugreifen.