MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como converter uma string com caracteres no int para toda a coleção?


Se você deseja converter a coleção inteira, pode fazê-lo com o pipeline de agregação.

Você precisa converter a moeda para string usando $substr e $toInt( ou $toDouble , ou $convert o que for mais adequado ao seu caso) no $project palco e $out como seu último estágio de agregação. $out grava o resultado do pipeline de agregação no nome de coleção fornecido.

Mas tenha cuidado ao usar $out . De acordo com a documentação oficial do mongodb:

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

talvez seja necessário usar allowDiskUse : true como uma opção para o pipeline de agregação, pois você tem muitos documentos e pode ultrapassar o limite de 16 MB do mongodb.

Não se esqueça de substituir collection_name com o nome da coleção real e inclua todos os campos obrigatórios no $project estágio que você precisa na coleção. E verifique o valor primeiro com uma temporary_collection diferente ou apenas removendo o estágio $out e verificando o resultado de aggregation canalização.

Para obter informações detalhadas, leia a documentação oficial do mongodb $out , $toInt , $toDouble , $convert, $substr e allowDiskUse .