编写 js 脚本

  • js 脚本中不能包含 use 关键字,需要用 $ mongo mydb xxx.js 这样的方式来指定数据库

  • 不能用 console.log,需要用 print 代替

  • 调用 ObjectId() 时需要确保传进去的值为字符串,否则会出现 Error: invalid object id: length

  • 使用 $set 来设置数字时需要注意,mongo shell 默认会把所有数字类型的值转换成浮点型,如果你需要插入整形,你需要用 NumberInt()NumberLong() 来代替。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    $ mongo mydb test.js
    
    // test.js
    var users = db.users.find({});
    users.forEach(function(u) {
    
    // not console.log(u._id) !!
    // use print instead of console!
    print(u._id);
    
    db.users.update({
        _id: ObjectId('' + u._id) // make sure the params is string
    }, {
        $set: {
            money: NumberInt(100) // it will be int, not float.
        }
    });
    });
    

参考资料