1

更新操作

跨数据库更新字段

getSiblingDB获取其他的数据库

db.getCollection('xxx').find({"field_name":{"$lt":20000000}}).forEach(function(_item){
        db.getSiblingDB("other_db").collection_name.update({"feild_name1":_item.field_name1},{$set:{"field_name2":_item.field_name2}},false,true);
})

getSiblingDB("other_db")指定要跨的数据库
getSiblingDB("other_db").collection_name 指定表名collection_name

更新数组里面的字段

$elemMatch 匹配数据里的数据
$set 更新

db.getCollection('xxx').update({
        "name":"bc2c2e9676e74600274d3e3738bab5c6a27dc85d560563b695fece08b6a7f7de",
        "array_name":{"$elemMatch":{"type":"control"}},
        },
        {"$set":{"array_name.$.amount":15000000}}
    )

更新字段名

db.集合名称.update({}, {$rename:{"旧键名称":"新键名称"}}, false, true)

第一个false表示:可选,这个参数的意思是,如果不存在update的记录,true为插入新的记录,默认是false,不插入。
第二个true表示:可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

更新字段类型/插入/删除字段


int转换成字符串类型

db.getCollection('xxx').find({"decimals":{$type:"int"}}).forEach(function(x){
        x.decimals=String(x.decimals);
        db.asset.save(x);
})

    Double 1 “double”
    String 2 “string”
    Object 3 “object”
    Array 4 “array”
    Binary data 5 “binData”
    Undefined 6 “undefined” Deprecated.
    ObjectId 7 “objectId”
    Boolean 8 “bool”
    Date 9 “date”
    Null 10 “null”
    Regular Expression 11 “regex”
    DBPointer 12 “dbPointer”
    JavaScript 13 “javascript”
    Symbol 14 “symbol”
    JavaScript (with scope) 15 “javascriptWithScope”
    32-bit integer 16 “int”
    Timestamp 17 “timestamp”
    64-bit integer 18 “long”
    Min key -1 “minKey”
    Max key 127 “maxKey

sixgo
156 声望4 粉丝

这里有BUG!