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

PyMongo Aktualizujte dokument s více záznamy

Pro nové položky

db.cmpe285.update({"username":username}, {"$push": {"stocks":{"name":stock_symbol,"count":allotment,"price":initial_share_price}}})

Pro aktualizaci stávajících položek , za předpokladu, že aktualizujete přidělení. musíte použít poziční operátor ($) s hodnotou pole odkazovanou v dotazu.

db.cmpe285.update({"username":username, "stocks.name":stock_symbol}, {"$set": {"stocks.$.count":allotment2}})

Pro upserting položek , je to proces ve 2 krocích. Nejprve budete muset spustit dotaz stejným způsobem jako pro aktualizaci existujících položek, jak je uvedeno výše, a zkontrolovat odpověď na výsledek zápisu z výše uvedeného dotazu a zkontrolovat upravený počet. Pokud je upravený počet 0, znamená to, že musíme upsert a pak to uděláte stejně jako v případě přidávání nových položek.

db.cmpe285.update({"username":username, "stocks.name":stock_symbol}, {"$set": {"stocks.$.count":allotment2}})

Zkontrolujte WriteResult , pokud je nmodifikováno rovno 0.

db.cmpe285.update({"username":username}, {"$push": {"stocks":{"name":stock_symbol,"count":allotment2,"price":initial_share_price}}})

Pokud se nmodified rovná 1, upserting byl úspěšný.



  1. Jak vytvořit pole automatického přírůstku

  2. Jak používáte arrayFilters s mongoose 5.x.x?

  3. $filter inside $project MongoDB pomocí Spring Data

  4. Kdy použít Singleton vs Transient vs Request pomocí Ninject a MongoDB