sql >> Database teknologi >  >> NoSQL >> MongoDB

Opdatering af et objekt inde i et array med PyMongo

Brug "dot notation" og positionsoperatøren i opdateringsdelen. Forvandl også dit input til at matche "punktnotation"-formen for nøglerepræsentationen:

# 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 }
)

Så det vil transponere $ til den faktiske matchede elementposition fra forespørgselsdelen af ​​opdateringen. Det matchede array-element vil blive opdateret, og ved brug af "punktnotation" vil kun de nævnte felter blive påvirket.

Aner ikke hvad "service" skal betyde i denne sammenhæng, og jeg behandler det bare som en "transskriberingsfejl", da du tydeligvis forsøger at matche et array-element i position.

Det kunne være renere, men det burde give dig den generelle idé.




  1. Modellering af en NoSQL-forumapplikation med C# / ASP.net MVC

  2. MongoDB DateTime Format

  3. ServiceStack:Genindsæt pipeline, når du kalder en tjeneste manuelt?

  4. Få værdier som matrix af elementer efter $lookup