Hängen Sie das Element an das MongoDB-Dokumentarray in PyMongo an, ohne es erneut einzufügen

8

Ich verwende MongoDB als Back-End-Datenbank für die Python-Webanwendung (PyMongo + Bottle). Benutzer können Dateien hochladen und diese Dateien optional während des Uploads "markieren". Die Tags werden wie folgt im Dokument gespeichert:

%Vor%

Ich versuche, Benutzern zu ermöglichen, neue Tags an jedes Dokument anzuhängen. Ich habe mir so etwas ausgedacht:

%Vor%

(fyi; ref key ist immer eindeutig. Dies könnte auch _id sein.) Es scheint so, als ob es einen Weg geben könnte, den "Tag" -Wert direkt zu aktualisieren, ohne das gesamte Dokument zurückzuziehen und neu einzufügen. Fehle ich hier etwas?

Irgendwelche Gedanken werden sehr geschätzt:)

    
deadbits 17.10.2015, 17:06
quelle

3 Antworten

12

Sie müssen das Dokument nicht zuerst abrufen, verwenden Sie einfach die .update -Methode mit dem $push operator.

%Vor%

Da das Update veraltet ist, sollten Sie das find_one_and_update verwenden. oder die Methode update_one wenn Sie pymongo 2.9 oder neuer verwenden

    
styvane 17.10.2015, 17:18
quelle
1

Sie können das einfach tun

1) Wenn Sie einen einzelnen Eintrag anhängen möchten

%Vor%

zB:

%Vor%

2) Wenn Sie mehrere Einträge anhängen möchten

%Vor%

zB:

%Vor%

Hinweis: Wenn der Schlüssel nicht bereits vorhanden ist, erstellt Mongo einen neuen Schlüssel.

    
Nikhil Fulzele 12.10.2017 05:47
quelle
0

Nur zur @sytvane Antwort hinzufügen und @Guarav beantworten: Sie können "upsert = True" hinzufügen, wenn es nicht existiert:

%Vor%

oder

%Vor%     
Kiluvya.A 15.09.2017 02:05
quelle