• Update MongoDB field using value of another field


    参考资料:https://stackoverflow.com/questions/3974985/update-mongodb-field-using-value-of-another-field/28460030

    mongo 4.2

    类似,update table set filed = other-filed where filter ....

    db.collection.<update method>(
        {},
        [
            {"$set": {"name": { "$concat": ["$firstName", " ", "$lastName"]}}}
        ]
    )

    mongo3.4+

    db.collection.aggregate(
        [
            { "$addFields": { 
                "name": { "$concat": [ "$firstName", " ", "$lastName" ] } 
            }},
            { "$out": "collection" }
        ]
    )

    mongo 3.2 and 3.0

    var cursor = db.collection.aggregate([ 
        { "$project":  { 
            "name": { "$concat": [ "$firstName", " ", "$lastName" ] } 
        }}
    ])
    var requests = [];
    cursor.forEach(document => { 
        requests.push( { 
            'updateOne': {
                'filter': { '_id': document._id },
                'update': { '$set': { 'name': document.name } }
            }
        });
        if (requests.length === 500) {
            //Execute per 500 operations and re-init
            db.collection.bulkWrite(requests);
            requests = [];
        }
    });
    if(requests.length > 0) {
         db.collection.bulkWrite(requests);
    }
     

    mongo 2.6 and 3.0


    var bulk = db.collection.initializeUnorderedBulkOp();
    var count = 0;
    cursor.snapshot().forEach(function(document) { 
        bulk.find({ '_id': document._id }).updateOne( {
            '$set': { 'name': document.name }
        });
        count++;
        if(count%500 === 0) {
            // Excecute per 500 operations and re-init
            bulk.execute();
            bulk = db.collection.initializeUnorderedBulkOp();
        }
    })
    // clean up queues
    if(count > 0) {
        bulk.execute();
    }
     
     

    mongo 2.4

     
    cursor["result"].forEach(function(document) {
        db.collection.update(
            { "_id": document._id }, 
            { "$set": { "name": document.name } }
        );
    })
     
  • 相关阅读:
    Microsoft To-Do无法同步问题 ke xue上网导致
    学习希尔排序
    查找docker无法启动的原因
    挂载只读分区为可读写
    批量重建索引脚本
    frp nginx 80 端口共用
    vue部署nginx 404
    阿里云服务器,数据库热备、暖备、冷备实战-镜像篇(域环境下配置)
    码农老婆的网店
    Wcf调用方式
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/13610479.html
Copyright © 2020-2023  润新知