sql >> Databáze >  >> NoSQL >> MongoDB

Jak převést řetězec se znaky v int pro celou kolekci?

Pokud chcete převést celou kolekci, můžete to udělat pomocí agregačního kanálu.

Měnu musíte převést na řetězec pomocí $substr a $toInt( nebo $toDouble , nebo $convert cokoli vyhovuje vašemu případu) v $project fázi a $out jako poslední fázi agregace. $out zapíše výsledek agregačního kanálu do daného názvu kolekce.

Ale buďte opatrní při používání $out . Podle oficiální mongodb dokumentace:

Zkuste toto:

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

možná budete muset použít allowDiskUse : true jako možnost agregačního kanálu, protože máte spoustu dokumentů a může to překonat limit 16 MB mongodb.

Nezapomeňte nahradit collection_name se skutečným názvem kolekce a zahrňte všechna povinná pole v $project fázi, kterou potřebujete ve sbírce. Nejprve prosím zkontrolujte hodnotu pomocí jiné temporary_collection nebo jen odstraněním fáze $out a kontrolou výsledku aggregation potrubí.

Podrobné informace najdete v oficiální dokumentaci mongodb $out , $toInt , $toDouble , $convert, $substr a allowDiskUse .




  1. Spring data mongodb, jak nastavit SSL?

  2. Bylo dosaženo maximálního počtu připojení Azure Redis Cache

  3. Mongoose řetězec na ObjectID

  4. Připojení SSL socketu aplikace Django k firmwaru