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?
Document Mapping in CouchDB-Python
- noisefloor
- User
- Beiträge: 4149
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
ohne ID kommst du an kein Dokument in CouchDB, jedenfalls wüsste ich nicht, wie.
Gruß, noisefloor
ohne ID kommst du an kein Dokument in CouchDB, jedenfalls wüsste ich nicht, wie.
Gruß, noisefloor
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.
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
- noisefloor
- User
- Beiträge: 4149
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
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
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
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
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
- noisefloor
- User
- Beiträge: 4149
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
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
@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
Zuletzt geändert von noisefloor am Dienstag 6. Dezember 2011, 07:39, insgesamt 1-mal geändert.
Ich habe gerade festgestellt, dass man keine Funktion in ein ViewField eintragen muss
Man kann eine ViewDefinition permanent speichern und anschließend trotzdem mit Content.by_title() darauf zugreifen.
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))
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol: