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

Hvordan konverterer man en streng med tegn i int for hele samlingen?

Hvis du vil konvertere hele samlingen, kan du gøre det med Aggregation pipeline.

Du skal konvertere valutaen til streng ved hjælp af $substr og $toInt( eller $toDouble , eller $convert uanset hvad der passer til dit tilfælde) i $project stage og $out som din sidste fase af aggregering. $out skriver resultatet af aggregeringspipelinen til det givne samlingsnavn.

Men vær forsigtig, mens du bruger $out . Ifølge officiel mongodb-dokumentation:

Prøv dette:

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"
    }
])

du skal muligvis bruge allowDiskUse : true som en mulighed for aggregering af pipeline, da du har en masse dokumenter, og det kan overstige 16 MB mongodb-grænsen.

Glem ikke at erstatte collection_name med det faktiske samlingsnavn og inkludere alle de påkrævede felter i $project fase, som du har brug for i samlingen. Og dobbelttjek venligst værdien først enten med en anden temporary_collection eller bare ved at fjerne $out-stadiet og kontrollere resultatet af aggregation pipeline.

For detaljerede oplysninger læs den officielle mongodb-dokumentation $out , $toInt , $toDouble , $convert, $substr og allowDiskUse .




  1. Søg i hele samlingen (mongodb) ved hjælp af nodejs

  2. Kan jeg gøre to kolonner unikke for hinanden? eller bruge sammensatte primære nøgler i redis?

  3. Hvorfor forår data mongo ikke returnere feltet har tid?

  4. MongoError:Muligheden 'cursor' er påkrævet, undtagen for aggregering med forklaringsargumentet