MongoDB:03---MongoDB数据库创建、集合操作、文档操作

一、基本命令

1.创建数据库

如果数据库不存在则创建

use 数据库名称

2. 查看有权限查看的所有的数据库

show dbs 或 show databases

注意:在MongoDB中,集合只有在内容插入后才会创建!也就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

3. 查看当前正在使用的数据库

MongoDB中默认的数据库为test,如果你没有选择数据库,集合将存放在test数据库中。

db

数据库名可以是满足以下条件的任意UTF-8字符串。

  • 不能是空字符串("")
  • 不能含有空格、$、/、\、和\0(空字符)。
  • 应该全部小写。
  • 最多64字节

有些数据库名是保留的,可以直接访问这些有特殊作用的数据库。

  • admin:从权限的角度来看,这是"root"数据库。要将用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
  • local:这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合。
  • config:当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

4.删除数据库

db.dropDatabase() 主要用来删除已经持久化的数据库。

5. 集合操作

集合,类似于关系型数据库中的表,可以显示的创建,也可以隐式的创建。

集合的命名规范:

  1. 集合名不能是空字符串。
  2. 集合名不能含有\0字符(空字符),这个字符表示集合名的结尾。
  3. 集合名不能以"system."开头,这是为系统集合保留的前缀。
1. 显式创建
db.createCollection(name) //name:要创建的集合名称

例如:要创建一个名字为mycollection的普通集合。

db.createCollection("mycollection")
2. 查看当前库中的表
show collections 或 show tables
3. 隐式创建
  • 当向一个集合中插入一个文档时,如果集合不存在,则会自动创建集合,提示:通常我们隐式创建文档即可。
4. 删除集合
db.collection.drop() 或 db.集合.drop()

返回值
如果成功删除选定集合,则drop()方法返回true,否则返回false。
例如:要删除mycollection的集合

db.mycollection.drop()

二、文档基本操作

文档(document)的数据结构和Json基本一样,所有存储在集合中的数据都是BSON格式。

1. 文档的插入

1. 单个文档的插入
  • 使用insert()或save()方法向集合中插入文档,语法如下:
db.collection.insert("要插入的数据json")

例如:

db.commnet(集合名)[collection].insert({"name":"张飞","addr":"武汉市东西湖未来之光","ipone":"158764242514"})
2. 批量文档的插入
db.collection[或集合名].insertMany("要插入的数据json数组格式")

例如:

db.collection[或集合名].insertMany([{"name":"刘备","addr":"武汉市江岸区","ipone":"186524584636"},
{"name":"关羽","addr":"武汉市洪山区光谷广场","ipone":"185456455655"}]))

2. 文档查询

1. 文档查询所有
db.comment(集合名)[或collection].find()
2. 按条件查询
  • 例如:查询name为张飞的记录。
db.collection.find({"name":"张飞"})
  • 如果你只需要返回符合条件的第一条数据,我们可以用findOne命令来实现,语法和find一样。
db.collection(或集合名字).findOne({"name":"张飞"})
3. 投影查询(查询部分字段)
  • 如果查询结果返回部分字段,则需要使用投影查询(不显示所有字段,只显示指定的字段)。
    如:查询结果只显示_id,name,addr,此处_id会默认显示,addr后面的参数值为1即可
 db.collection.find({name:"张飞"},{"addr":1})

如:查询结果只显示name,addr,不显示_id:此处_id后面的参数值为0即可

db.collection.find({name:"张飞"},{"addr":1,_id:0})
4. try catch的使用

插入数据时,如果某条数据插入失败,将会终止插入,但已经插入成功的数据不会回滚。因为批量插入由于数据较多容易出现失败,因此,可以使用 try catch进行异常捕捉处理,测试的时候可以不处理。
例如:

try{
db.collection[或集合名].insertMany("数据")
}catch(e){
print(e)
}

3. 文档的更新

  • MongoDB 使用 update()save() 方法来更新集合中的文档。接下来让我们详细来看下两个函数的应用及其区别。
1. update() 方法
  • update() 方法用于更新已存在的文档。语法格式如下:
  • update() 方法用于更新已存在的文档
  • 语法格式如下:
db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)
  • 参数说明:
参数说明
queryupdate的查询条件,类似sql update查询内where后面的。
updateupdate的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的
upsert可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi :可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern可选,抛出异常的级别。
  • 覆盖的修改
    例如:如果我们想修改"name"为"张飞"的记录,“ipone"为"123456789”
 db.collection.update({"name":"张飞"},{"ipone":"123456789"})

执行后,我们发现,这条文档除了"ipone"字段,其他字段都不见了

  • 局部的修改
  • 我们需要用修改器$set来实现,命令如下
    例如:我们想修改"name"为"关羽"的记录,“ipone"为"987654321”
db.collection.update({"name":"关羽"},{$set:{"ipone":"987654321"}})
  • 批量的修改
    更新所有的用户为1003的用户昵称为凯瑟大帝
//默认只修改一条数据
db.collection.update({"uerid":1003},{$set:{"nickname":"凯撒2"}})
//修改符合条件的所有数据
db.collection.update({"uerid":1003},{$set:{"nickname":"凯撒大帝"}},{multi:true})

提示:如果不加后面的参数,则默认只更新符合条件的第一条记录。

  • 列值增长的修改
    如果我么想实现对某列值在原有值的基础上进行增加或减少,可以使用$inc运算符来实现
    例如:需要对3号数据的点赞数,每次递增1
db.collection.update({_id:"3"},{$inc:{likenum:NumberInt(1)}})
2. save() 方法

save() 方法通过传入的文档来替换已有文档,_id 主键存在就更新,不存在就插入。语法格式如下:

db.collection.save(
   <document>,
   {
     writeConcern: <document>
   }
)
参数说明
document文档数据。
writeConcern可选,抛出异常的级别。

4. 文档的删除

删除文档的语法结构:

db.集合名.remove(条件)

以下语句可以将数据全部删除,谨慎使用

db.集合名.remove({})

例如:删除_id=1的记录

db.collection.remove({_id:"1"})
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值