MongoDB增删改查

Wesley13
• 阅读 663

MongoDB增删改查

查询数据库: show dbs

进入数据库: use MYDB

查询数据库中表: show tables

在mongo中创建新的用户 并赋予相应权限:

db.createUser({

user:<name_string>,                   #字符串

pwd:<password_string>, #字符串

roles:[{role:<role_name>,db:<db_name>}]     #数组+对象

})

user文档字段介绍: user字段,为新用户的名字; pwd字段,用户的密码; cusomData字段,为任意内容,例如可以为用户全名介绍; roles字段,指定用户的角色,可以用一个空数组给新用户设定空角色; 在roles字段,可以指定内置角色和用户定义的角色。

Built-In Roles(内置角色):

  1. 数据库用户角色:read、readWrite;
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  4. 备份恢复角色:backup、restore;
  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
  7. 内部角色:__system

创建用户

例如:给admin添加一个root用户
> use admin
switched to db admin

> db.createUser({user:"admin",pwd:"123456",roles:[{role:"root",db:"admin"}]})
Successfully added user: {
    "user" : "admin",
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
}

mongodb.conf文件中加入 auth=true

验证用户

> use admin
switched to db admin
> db.auth("admin","123456")
 1

删除用户

db.dropUser(<user_name>)    删除某个用户,接受字符串参数

db.dropAllUser()             删除当前库的所有用户

注意: 在mongo4.0版本中 配置用户认证需要在mongod.cfg中

security:
 authorization: enabled

重新启动服务: mongod -f "C:\Program Files\MongoDB\Server\4.0\bin\mongod.cfg"

增加

语法: db.collectionName.insert({json对象});

1. 增加单个文档,json对象格式
db.user.insert({name:'lee',age:23,sex:'0'}); 

2. 增加多个文档,数组格式
db.user.insert([{name:'lee',age:21,sex:'1'},{name:'lee3',age:24,sex:'0'}]); 

删除

语法: db.collection.remove(查询条件, num); 第二个参数是整数型,代表删除的个数;默认是0(删除全部文档)

1. 将age等于21的全部删除
db.user.remove({age:'24'})

2. 删除 1 个 name=lee 的文档
db.user.remove({name:'lee'},1)

修改

语法: db.collection.update(查询条件,新值);


1. 将 name等于lee3 的文档 全部更新
db.user.update({name:lee3},{name:"lee"})

2. 修改一个文档的字段,必须使用$set:{属性:'值'}
db.user.update({name:'lee3'},{$set:{name:'haha'}})

查询

语法: db.collection.find(查询条件,查询的列);

1. 查询一个表中的所有文档
db.user.find()

2.查询特定文档
db.user.find({name:'long'})

数据库迁移 :

使用mongo自带命令来进行迁移数据库,先导出集合数据再导入数据库中

数据导出:mongoexport -d dbname -c collectionname -o filepath --type json/csv -f field

数据导入:mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field

连接远程mongodb备份导入导出

连接远程数据库:mongo -u username -p pwd host:post/database(数据库名)

注:当该用户有相应权限时,可以查看collection==>查看集合命令:show collections

备份导出:mongodump -h dbhost -d dbname -o dbdirectory

备份恢复:mongorestore -h dbhost -d dbname dbdirectory

可视化工具迁移

详细步骤:https://jingyan.baidu.com/article/63f236287e91c40208ab3d11.html
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
MongoDB基础
MongoDB与关系型数据库的对比:!(https://oscimg.oschina.net/oscnet/545b6624046cd348c3b292bc4b161d0a272.png) 1.创建数据库: 2.创建集合3.集合的增、删、改、查1)在集合(表名)中插入一个文档(一行数据):db.集合名称.insert({name
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Vitess全局唯一ID生成的实现方案 | 京东云技术团队
为了标识一段数据,通常我们会为其指定一个唯一id,比如利用MySQL数据库中的自增主键。但是当数据量非常大时,仅靠数据库的自增主键是远远不够的,并且对于分布式数据库只依赖MySQL的自增id无法满足全局唯一的需求。因此,产生了多种解决方案,如UUID,Sn
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这