Ich verwende MongoDB als Back-End-Datenbank für Python-Web-Anwendung (PyMongo + Bottle). Benutzer können Dateien hochladen und diese Dateien optional während des Uploads "markieren". Die Tags werden als Liste im Dokument wie folgt gespeichert:Artikel an MongoDB Dokument-Array in PyMongo ohne Wiedereinfügung anhängen
{
"_id" : ObjectId("561c199e038e42b10956e3fc"),
"tags" : [ "tag1", "tag2", "tag3" ],
"ref" : "4780"
}
Ich versuche, Benutzern zu erlauben, neue Tags an jedes Dokument anzuhängen. Ich kam mit so etwas wie dies oben: (.. FYI, ref
Schlüssel immer eindeutig ist dies leicht _id
auch sein könnte)
def update_tags(ref, new_tag)
# fetch desired document by ref key as dict
document = dict(coll.find_one({'ref': ref}))
# append new tag
document['tags'].append(new_tag)
# re-insert the document back into mongo
coll.update(document)
Es scheint, wie es eine Möglichkeit sein sollte, nur die ‚Tags‘ zu aktualisieren Wert direkt, ohne das gesamte Dokument zurückzuziehen und wieder einzufügen. Fehle ich hier etwas?
sind Irgendwelche Gedanken sehr geschätzt :)
Was ist der Unterschied zwischen den beiden? Nur der Rückgabewert (das Dokument gegenüber einem UpdateResult-Objekt)? Wann benutzt du das eine oder das andere? – stackoverflowwww
Was passiert, wenn das Feld "Tags" nicht existiert? –
Wenn das Feld "Tags" nicht existiert, wird es erstellt. @GauravOjha – styvane