sql >> Databáze >  >> NoSQL >> MongoDB

Aktualizace objektu uvnitř pole pomocí PyMongo

Použijte "tečkovou notaci" a poziční operátor v aktualizační části. Také transformujte svůj vstup tak, aby odpovídal tvaru „tečkové notace“ pro reprezentaci klíče:

# Transform to "dot notation" on explicit field
for key in data:
    data["mylist.$." + key] = data[key]
    del data[key]

# Basically makes
# { 
#      "mylist.$.data1": "new lorem",
#      "mylist.$.data3": "goldeneye"
# }

db.testing.find_and_modify(
    query = {"_id": "12345", 'mylist.nested_id' : "1"},
    update = { "$set": data }
)

Takže to transponuje $ na skutečnou pozici odpovídajících prvků z části dotazu aktualizace. Přiřazený prvek pole bude aktualizován a pomocí "tečkové notace" budou ovlivněna pouze zmíněná pole.

Nemám ponětí, co má v tomto kontextu znamenat „služba“, a já to považuji pouze za „chybu přepisu“, protože se jasně snažíte porovnat pozici prvku pole.

To by mohlo být čistší, ale toto by vám mělo poskytnout obecnou představu.




  1. Ubuntu 16.04 systemd redis problémy s ulimit

  2. Obrázek vrácený z REST API se vždy zobrazuje jako poškozený

  3. MongoDB Update První použití metody

  4. Dokáže Meteor správně zpracovat data aktualizovaná externě přímo do databáze MongoDB?