sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo convertir una cadena con caracteres en el int para toda la colección?

Si desea convertir toda la colección, puede hacerlo con la canalización de agregación.

Debe convertir la moneda a cadena usando $substr y $toInt( o $toDouble , o $convert lo que se adapte a su caso) en el $project escenario y $out como su última etapa de agregación. $out escribe el resultado de la canalización de agregación en el nombre de colección dado.

Pero tenga cuidado al usar $out . Según la documentación oficial de mongodb:

Prueba esto:

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

es posible que deba usar allowDiskUse : true como una opción para la canalización de agregación, ya que tiene muchos documentos y puede superar el límite de mongodb de 16 MB.

No olvides reemplazar collection_name con el nombre real de la colección e incluya todos los campos requeridos en el $project etapa que usted necesita en la colección. Y por favor verifique el valor primero con una temporary_collection diferente o simplemente eliminando la etapa $out y comprobando el resultado de aggregation canalización.

Para obtener información detallada, lea la documentación oficial de mongodb $out , $toInt , $toDouble , $convert, $substr y allowDiskUse .