MongoDB使用

MongoDB安装

1、运行MongoDB:

1、docker run -p 27017:27017 -v /data/mongo:/data/db --name mongodb -d mongo

  • -p 映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务
  • -v 为设置容器的挂载目录,这里是将本机的“/data/mongo”目录挂载到容器中的/data/db中,作为 mongodb 的存储目录
  • –name 为设置该容器的名称
  • -d 设置容器以守护进程方式运行

2、进入Mongo内并创建用户

  1. 使用连接工具连接,此时的mongodb还是在裸奔状态,没有账号密码;使用mongodb桌面客户端可以直接连接,
  2. 或者使用 docker exec -it containerid mongo admin:管理员身份进入
  3. 创建MongoDB管理员用户:
db.createUser({
    user: 'root',
    pwd: '123456',
    roles: [{
        role: 'userAdminAnyDatabase',
        db: 'admin'
    }, 'readWriteAnyDatabase']
});
【user:‘root’ 】:设置用户名为root
【pwd:‘123456’】:设置密码为123456
【role:‘userAdminAnyDatabase’】:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
【db: ‘admin’】:可操作的数据库
【‘readWriteAnyDatabase’】:赋予用户读写权限

3、指定auth重新运行服务

  1. 使用密码运行:docker run -p 27017:27017 -v /data/mongo:/data/db --name mongodb -d mongo --auth
  2. 创建一个业务数据库和对应的读写账户
use test_db;
db.createUser({
    user: 'test_db',
    pwd: '123456',
    roles: [{
        role: "readWrite",
        db: "test_db"
    }]
});

​ 3.此时项目中可以使用此数据库连接:

mongodb://test_db:123456@127.0.0.1:27017/test_db

4、MongoDB基本操作:

  1. 进入容器:docker exec -it mongoId mongo admin

  2. 使用指定库:use test_db db.auth("test_db","123456");

  3. 添加数据: db.user.insert({"name":"zhangsan","age":18});

  4. 查询数据:---查询所有 db.user.find();

  5. 更新数据:db.user.update({age: 16}, {$set: {person_name: "张三"}})

    db.tb_person.update({age: 16}, {$set: {person_name: "张三"}}, {upsert: true, multi: true})
    	--  upsert (默认false ) : 可选,如果不存在update的记录,是否保存。true为保存。
    	--  multi(默认false ) : 可选,默认只更新第一条记录。true:更新所有匹配数据
    	--  writeConcern :可选,抛出异常的级别
    
    
  6. 删除数据:-- 普通删除 db.user.remove({person_name: "张三"})

    db.tb_person.remove({person_name: "张三"}, false)
    	-- justOne: (可选)true:删除第一个匹配记录,false:删除所有
    	-- writeConcern :(可选)抛出异常的级别
    
  7. 查询数据:

    --  查询person_name=张三 或者 年龄 18
    db.tb_person.find({$or:[{person_name: "张三"},{age:18 }]}) 
    
    -- 分页查询  以年龄升序排序 跳过第1条数据,查询后面2条数据
    db.tb_person.find().sort({age:1}).limit(2).skip(1)  
    
    -- 查询年龄小于等于21的数据,以年龄降序排序
    db.tb_person.find({age:{$lte:21}}).sort({age:-1})
    
posted @ 2023-04-14 10:53  渡——已  阅读(30)  评论(0)    收藏  举报