MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come convertire una stringa con caratteri int per l'intera raccolta?

Se vuoi convertire l'intera raccolta, puoi farlo con la pipeline di aggregazione.

Devi convertire la valuta in stringa usando $substr e $toInt( o $toDouble o $convert qualunque sia il tuo caso) nel $project stage e $out come ultima fase di aggregazione. $out scrive il risultato della pipeline di aggregazione nel nome della raccolta specificato.

Ma fai attenzione mentre usi $out . Secondo la documentazione ufficiale di mongodb:

Prova questo:

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

potresti dover usare allowDiskUse : true come opzione per la pipeline di aggregazione, poiché hai molti documenti e potrebbe superare il limite di 16 MB di mongodb.

Non dimenticare di sostituire collection_name con il nome effettivo della raccolta e includi tutti i campi richiesti nel $project fase di cui hai bisogno nella raccolta. E per favore ricontrolla prima il valore con una temporary_collection diversa o semplicemente rimuovendo la fase $out e controllando il risultato dell'aggregation pipeline.

Per informazioni dettagliate, leggi la documentazione ufficiale di mongodb $out , $toInt , $toDouble , $convert, $substr e allowDiskUse .