这是本文档旧的修订版!


MongoDB

  • mongo [–port ][–host ]进入mongodb命令行, 默认port为27017, host localhost
  • 命令行支持javascript语法
  • 帮助:help
  • 显示db列表: show dbsshow databases
  • 显示当前db: db
  • 切换db: use dbname 可以直接切换到一个不存在的db来插入数据, 相当于创建.
  • 显示当前db的collection列表 show collections
  • 插入数据,注意collection可以是事先不存在的, 比如下面的testData,命令执行后会自动创建
    j = { name : "mongo" }
    k = { x : 3 }
    db.testData.insert( j )
    db.testData.insert( k )
    //或者循环插入
    for (var i = 1; i <= 25; i++) db.testData.insert( { x : i } )
  • 查看插入的数据:db.testData.find().
  • mongodb要求每条数据都要有_id, 如果没指定, 会自动创建一个.
  • find()或其它获取方式的返回数据, 称为cursor, 可对此结果进行操作, 比如
    var c = db.testData.find()
    while ( c.hasNext() ) printjson( c.next() )
  • mongodb 启动时加 –auth 才开启用户认证;
  • mongodb 开启认证后, 默认 admin 数据库没有用户,此时可添加用户及相应的 role , 一般是 userAdminAnyDatabase,即能对所有数据库进行用户管理;
    use admin;
    db.createUser(
      {
        user: "myUserAdmin",
        pwd: "abc123",
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
      }
    )
  • admin 数据库里有用户后,后续操作就需要认证。用户管理需要以 admin 数据库登录再 use dbname ,然后用用户管理函数操作
  • 可以给用户添加dbAdminAnyDatabase角色以操作所有数据库数据(userAdmin 只操作用户)。
  • 客户端或 shell 登录时如果指定了数据库名称,那么就只能用该数据库里的用户登录db.getUsers()里列出的)。
  • mongo 的 docker 镜像,在 OSX/Windows 下不能用容器外存储。
  • mongo 的 collections 数量限制上限为命名空间数量,命名空间包括 collection 名称与索引名称, 上限大概为24000个,可调整。
  • public/it/mongodb.1483690672.txt.gz
  • 最后更改: 2017/01/06 16:17
  • oakfire