sql >> データベース >  >> NoSQL >> MongoDB

mongodbで文字列を数値に変換する方法

    MongoDBアグリゲーションでは、特定のフィールドの既存のデータ型を変更することはできません。この場合、stringを変換するプログラミングコードを作成する必要があります intへ 。以下のコードを確認してください

    db.collectionName.find().forEach(function(data) {
        db.collectionName.update({
            "_id": data._id,
            "moop": data.moop
        }, {
            "$set": {
                "PartnerID": parseInt(data.PartnerID)
            }
        });
    })
    

    コレクションのサイズが上記のスクリプトよりも大きい場合、パフォーマンスが低下します。perfomaceの場合、mongoはmongoバルク操作を提供し、mongoバルク操作を使用してデータ型も更新します

    var bulk = db.collectionName.initializeOrderedBulkOp();
    var counter = 0;
    db.collectionName.find().forEach(function(data) {
        var updoc = {
            "$set": {}
        };
        var myKey = "PartnerID";
        updoc["$set"][myKey] = parseInt(data.PartnerID);
        // queue the update
        bulk.find({
            "_id": data._id
        }).update(updoc);
        counter++;
        // Drain and re-initialize every 1000 update statements
        if (counter % 1000 == 0) {
            bulk.execute();
            bulk = db.collectionName.initializeOrderedBulkOp();
        }
        })
        // Add the rest in the queue
    if (counter % 1000 != 0) bulk.execute();
    

    これにより、基本的に、サーバーに送信される操作ステートメントの量が、キューに入れられた1000回の操作ごとに1回だけ送信されるようになります。



    1. CAS(チェックアンドセット)を実装するRedis Luaスクリプト?

    2. Linuxでredis-serverを強制終了できません

    3. bsonドキュメントを作成して渡す方法-Golang?

    4. 変数への検索クエリで結果をマングースに返します