Ubuntu下安装配置与使用mongodb

date: 2018.07.06; modification:2018.10.31

目录:

1 安装

环境: ubuntu 18.04

sudo apt install mongodb mongodb-clients

2 配置

2.1 基本配置

sudo vim /etc/mongodb.conf

// 修改这两行:
port = 12345
auth = true

sudo service mongodb restart

2.2 安全设置

mongo --port 12345

添加管理员用户:

use admin
// 创建账号:
db.createUser({user:"root_user_name",pwd:"pwd_test",roles:["root"]})
// 用户授权:
db.auth("root_user_name","pwd_test")

在设定了管理员用户并且在配置文件中开启了 auth = true 之后, 重启服务则可以开启了没有安全设置. 此时如果客户端进入后, 可能会发现连show dbs都没有权限了. 此时需要执行:

use admin
db.auth("root_user_name","pwd_test")

之后就可以获取root权限了.

添加数据库用户:

use db1
db.db1.insert({"name": "db1"})    // 保存一下数据库.
db.createUser({user: "user1", pwd: "xyz123", roles: [{ role: "dbOwner", db: "db1" }]})

3 使用

3.1 交互shell

简单的一些交互式命令:

3.1.1 查看数据库

show dbs    // 显示所有数据库
db          // 查看当前数据库

3.1.2 创建数据库

use DATABASE_NAME

3.1.3 删除数据库

在已切换到将要被删除的数据库中后:

db.dropDatabase()

3.1.4 列举集合

show collections

3.1.5 创建集合

db.createCollection(name, options)

例如:

db.createCollection("mycol", { capped : true, autoIndexId : true, size : 6142800, max : 10000 } )
db.mycol2.insert({"name" : "菜鸟教程"})     # 插入数据时自动创建

options:

3.1.6 删除集合

db.COLLECTION_NAME.drop()

3.1.7 集合中插入文档(记录)

db.COLLECTION_NAME.insert(document)
db.COLLECTION_NAME.save(document)       # 不存在则新建, 否则更新.

3.1.8 更新文档

db.COLLECTION_NAME.update(
    <query>,                            # update的查询条件, 类似sql update查询内where后面的.
    <update>,                           # update的对象和一些更新的操作符(如$,$inc...)等, 也可以理解为sql update查询内set后面的
    {
        upsert: <boolean>,              # 可选, 这个参数的意思是, 如果不存在update的记录, 是否插入objNew,true为插入, 默认是false, 不插入.
        multi: <boolean>,               # 可选, mongodb 默认是false,只更新找到的第一条记录, 如果这个参数为true,就把按条件查出来多条记录全部更新
        writeConcern: <document>        # 可选, 抛出异常的级别.
    }
)

3.1.9 删除文档

db.COLLECTION_NAME.remove(
    <query>,                            # (可选)删除的文档的条件.
    {
        justOne: <boolean>,             # (可选)如果设为 true 或 1, 则只删除一个文档.
        writeConcern: <document>        # (可选)抛出异常的级别.
    }
)

3.1.10 查询文档

db.COLLECTION_NAME.find(query, projection)

3.1.11 添加数据库用户

use db1
db.createUser({user: "user1", pwd: "1234567", roles: [{ role: "dbOwner", db: "db1" }]})

3.1.12 删除数据库用户

use db1
db.dropUser('user1')