Append-Element zu MongoDB Dokument-array in PyMongo ohne re-insertion

Ich bin mit MongoDB als back-end-Datenbank für Python-web-Anwendung (PyMongo + Flasche). Benutzer können Dateien hochladen und Optional 'tag' diese Dateien während upload. Die tags gespeichert sind, als Liste in das Dokument, pro unten:

{
    "_id" : ObjectId("561c199e038e42b10956e3fc"),
    "tags" : [ "tag1", "tag2", "tag3" ],
    "ref" : "4780"
}

Ich versuche, um Benutzern zu erlauben, fügt neue tags zu einem beliebigen Dokument. Ich kam mit so etwas wie dieses:

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)

(fyi; ref Schlüssel ist immer einzigartig. dies könnte leicht sein _id als gut.)
Es scheint, wie es sollte ein Weg gefunden werden, aktualisieren Sie einfach die "tags" Wert direkt, ohne zu ziehen wieder das gesamte Dokument und wieder einfügen. Bin ich hier etwas fehlt?

Irgendwelche Gedanken werden sehr geschätzt 🙂

InformationsquelleAutor deadbits | 2015-10-17
Schreibe einen Kommentar