Ако искате да конвертирате цялата колекция, можете да го направите с Aggregation pipeline.
Трябва да конвертирате валутата в низ, като използвате $substr
и $toInt(
или $toDouble
, или $convert
каквото отговаря на вашия случай) в $project
сцена и $out
като последния ви етап на агрегация. $out
записва резултата от тръбопровода за агрегиране в даденото име на колекция.
Но бъдете внимателни, докато използвате $out
. Според официалната документация на mongodb:
Опитайте това:
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"
}
])
може да се наложи да използвате allowDiskUse : true
като опция за конвейер за агрегиране, тъй като имате много документи и може да надхвърли лимита от 16MB mongodb.
Не забравяйте да замените collection_name
с действително име на колекция и включете всички задължителни полета в $project
етап, от който се нуждаете в колекцията. И моля, първо проверете отново стойността или с различна temporary_collection
или просто като премахнете етапа $out и проверите резултата от aggregation
тръбопровода
За подробна информация прочетете официалната документация на mongodb $out , $toInt , $toDouble , $convert, $substr и allowDiskUse .