MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie konvertiert man eine Zeichenfolge mit Zeichen in int für die gesamte Sammlung?

Wenn Sie die gesamte Sammlung konvertieren möchten, können Sie dies mit der Aggregationspipeline tun.

Sie müssen die Währung mit $substr in einen String umwandeln und $toInt( oder $toDouble , oder $convert was auch immer zu Ihrem Fall passt) im $project stage und $out als Ihre letzte Stufe der Aggregation. $out schreibt das Ergebnis der Aggregationspipeline in den angegebenen Sammlungsnamen.

Aber seien Sie vorsichtig, wenn Sie $out verwenden . Laut offizieller Mongodb-Dokumentation:

Versuchen Sie Folgendes:

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

Sie müssen möglicherweise allowDiskUse : true verwenden als Option für die Aggregationspipeline, da Sie viele Dokumente haben und die Mongodb-Grenze von 16 MB möglicherweise überschritten wird.

Vergessen Sie nicht, collection_name zu ersetzen mit dem tatsächlichen Sammlungsnamen und fügen Sie alle erforderlichen Felder in $project ein Stufe, die Sie in der Sammlung benötigen. Und bitte überprüfen Sie den Wert zuerst mit einer anderen temporary_collection oder einfach durch Entfernen der $out-Stufe und Überprüfen des Ergebnisses von aggregation Leitung.

Ausführliche Informationen finden Sie in der offiziellen Mongodb-Dokumentation $out , $toInt , $toDouble , $convert, $substr und allowDiskUse .