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 .