Pokud chcete převést celou kolekci, můžete to udělat pomocí agregačního kanálu.
Měnu musíte převést na řetězec pomocí $substr
a $toInt(
nebo $toDouble
, nebo $convert
cokoli vyhovuje vašemu případu) v $project
fázi a $out
jako poslední fázi agregace. $out
zapíše výsledek agregačního kanálu do daného názvu kolekce.
Ale buďte opatrní při používání $out
. Podle oficiální mongodb dokumentace:
Zkuste toto:
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"
}
])
možná budete muset použít allowDiskUse : true
jako možnost agregačního kanálu, protože máte spoustu dokumentů a může to překonat limit 16 MB mongodb.
Nezapomeňte nahradit collection_name
se skutečným názvem kolekce a zahrňte všechna povinná pole v $project
fázi, kterou potřebujete ve sbírce. Nejprve prosím zkontrolujte hodnotu pomocí jiné temporary_collection
nebo jen odstraněním fáze $out a kontrolou výsledku aggregation
potrubí.
Podrobné informace najdete v oficiální dokumentaci mongodb $out , $toInt , $toDouble , $convert, $substr a allowDiskUse .