sql >> Database >  >> NoSQL >> MongoDB

Hoe converteer je een string met karakters in de int voor de hele collectie?

Als u de hele verzameling wilt converteren, kunt u dit doen met de aggregatiepijplijn.

U moet de valuta converteren naar string met behulp van $substr en $toInt( of $toDouble , of $convert wat bij je past) in het $project stage en $out als uw laatste aggregatiestadium. $out schrijft het resultaat van de aggregatiepijplijn naar de opgegeven verzamelingsnaam.

Maar wees voorzichtig bij het gebruik van $out . Volgens officiële mongodb-documentatie:

Probeer dit:

db.collection_name.aggregate([
    {
        $project: {
            category : "$category",
            category_name : "$category_name",
            lot_title : "$lot_title",
            seller_name : "$seller_name",
            seller_country : "$seller_country",
            bid_count : "$bid_count",
            winning_bid : { $toInt : {$substr : ["$winning_bid",2,-1]}},
            bid_amount : "$bid_amount",
            lot_image : "$lot_image"
        }
    },{
        $out : "collection_name"
    }
])

mogelijk moet u allowDiskUse : true . gebruiken als een optie voor een aggregatiepijplijn, omdat je veel documenten hebt, en het kan de 16 MB mongodb-limiet overschrijden.

Vergeet niet collection_name te vervangen met de werkelijke collectienaam en voeg alle vereiste velden toe aan het $project fase die je nodig hebt in de collectie. En controleer de waarde eerst met een andere temporary_collection of gewoon door het $out-stadium te verwijderen en het resultaat van aggregation te controleren pijplijn.

Lees voor gedetailleerde informatie de officiële mongodb-documentatie $out , $toInt , $toDouble , $convert, $substr en allowDiskUse .




  1. Kan Mongo-shell niet verbinden met Mongo Atlas M0 met behulp van mongodb+srv

  2. Genereer PDF met JasperReport Library en MongoDB

  3. Jest en Redis (probleem met unit-tests met databasecache)

  4. Spring Boot + MongoDB Id-query