MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment convertir une chaîne avec des caractères dans l'int pour toute la collection ?

Si vous souhaitez convertir l'intégralité de la collection, vous pouvez le faire avec le pipeline d'agrégation.

Vous devez convertir la devise en chaîne en utilisant $substr et $toInt( ou $toDouble , ou $convert ce qui convient à votre cas) dans le $project étape et $out comme dernière étape d'agrégation. $out écrit le résultat du pipeline d'agrégation dans le nom de collection donné.

Mais soyez prudent lorsque vous utilisez $out . Selon la documentation officielle de mongodb :

Essayez ceci :

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

vous devrez peut-être utiliser allowDiskUse : true comme option pour le pipeline d'agrégation, car vous avez beaucoup de documents, et il peut dépasser la limite mongodb de 16 Mo.

N'oubliez pas de remplacer collection_name avec le nom réel de la collection et incluez tous les champs obligatoires dans le $project scène dont vous avez besoin dans la collection. Et veuillez d'abord vérifier la valeur soit avec un autre temporary_collection ou simplement en supprimant l'étape $out et en vérifiant le résultat de l'aggregation canalisation.

Pour des informations détaillées, lisez la documentation officielle de mongodb $out , $toInt , $toDouble , $convert, $substr et allowDiskUse .