sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur konverterar man en sträng med tecken i int för hela samlingen?

Om du vill konvertera hela samlingen kan du göra det med Aggregation pipeline.

Du måste konvertera valutan till sträng med $substr och $toInt( eller $toDouble , eller $convert vad som än passar ditt fall) i $project steg och $out som ditt sista steg av aggregering. $out skriver resultatet av aggregeringspipelinen till det givna samlingsnamnet.

Men var försiktig när du använder $out . Enligt officiell mongodb-dokumentation:

Prova detta:

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 kan behöva använda allowDiskUse : true som ett alternativ till aggregeringspipeline, eftersom du har många dokument, och det kan överskrida 16 MB mongodb-gränsen.

Glöm inte att ersätta collection_name med det faktiska samlingsnamnet och inkludera alla obligatoriska fält i $project steg som du behöver i samlingen. Och dubbelkolla först värdet antingen med en annan temporary_collection eller bara genom att ta bort $out-stadiet och kontrollera resultatet av aggregation pipeline.

För detaljerad information läs den officiella mongodb-dokumentationen $out , $toInt , $toDouble , $convert, $substr och allowDiskUse .




  1. Minska minnet som används för att ladda enorma pandordataramar från MongoDB

  2. F# Multiple Attributes CLIMutable DataContract

  3. Rails - Var lagrar MongoDB (Mongoid) db och loggar?

  4. MongoDB lastbalansering i flera AWS-instanser