MongoDB update_one vs update_many - Improve speed

Viewed 20

I got a collection of 10000 ca. docs, where each doc has the following format:

{
  "_id": {
    "$oid": "631edc6e207c89b932a70a26"
  },
  "name": "Ethereum",
  "auditInfoList": [
    {
      "coinId": "1027",
      "auditor": "Fairyproof",
      "auditStatus": 2,
      "reportUrl": "https://www.fairyproof.com/report/Covalent"
    }
  ],
  "circulatingSupply": 122335921.0615,
  "cmcRank": 2,
  "dateAdded": "2015-08-07T00:00:00.000Z",
  "id": 1027,
  "isActive": 1,
  "isAudited": true,
  "lastUpdated": 1662969360,
  "marketPairCount": 6085,
  "quotes": [
    {
      "name": "USD",
      "price": 1737.1982544180462,
      "volume24h": 14326453277.535921,
      "marketCap": 212521748520.66168,
      "percentChange1h": 0.62330307,
      "percentChange24h": -1.08847937,
      "percentChange7d": 10.96517745,
      "lastUpdated": 1662966780,
      "percentChange30d": -13.49374496,
      "percentChange60d": 58.25153862,
      "percentChange90d": 42.27475921,
      "fullyDilluttedMarketCap": 212521748520.66,
      "marketCapByTotalSupply": 212521748520.66168,
      "dominance": 20.0725,
      "turnover": 0.0674117,
      "ytdPriceChangePercentage": -53.9168
    }
  ],
  "selfReportedCirculatingSupply": 0,
  "slug": "ethereum",
  "symbol": "ETH",
  "tags": [
    "mineable",
    "pow",
    "smart-contracts",
    "ethereum-ecosystem",
    "coinbase-ventures-portfolio",
    "three-arrows-capital-portfolio",
    "polychain-capital-portfolio",
    "binance-labs-portfolio",
    "blockchain-capital-portfolio",
    "boostvc-portfolio",
    "cms-holdings-portfolio",
    "dcg-portfolio",
    "dragonfly-capital-portfolio",
    "electric-capital-portfolio",
    "fabric-ventures-portfolio",
    "framework-ventures-portfolio",
    "hashkey-capital-portfolio",
    "kenetic-capital-portfolio",
    "huobi-capital-portfolio",
    "alameda-research-portfolio",
    "a16z-portfolio",
    "1confirmation-portfolio",
    "winklevoss-capital-portfolio",
    "usv-portfolio",
    "placeholder-ventures-portfolio",
    "pantera-capital-portfolio",
    "multicoin-capital-portfolio",
    "paradigm-portfolio",
    "injective-ecosystem"
  ],
  "totalSupply": 122335921.0615
}

Im pulling updated version of it and, to aviod duplicates, im doing the following by using 'update_one'

for doc in new_doc_list:
    CRYPTO_TEMPORARY_LIST.update_one(
        { "name" : doc['name']},
        { "$set": { 
            "lastUpdated": doc['lastUpdated']
            }
        },
        upsert=True)

The problem is it's too slow. I'm trying to figure out how to improve speed by using update_many but can't figure out how to set it up.

I Basically want to update every document x name. Completely change the doc and not the "lastUpdated" field would b even better.

Thanks guys <3

0 Answers
Related