mongoDB作业+小结

本文介绍了关系型数据库与非关系型数据库的区别,重点阐述了MongoDB的特点及操作,包括数据存储方式、可扩展性和数据一致性。还详细讲解了MongoDB的基本操作,如增删改查,特别是insert与save的区别,以及查询文档的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关系型数据库有哪些?非关系型数据库有哪些?两者区别

关系型数据库:
Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL。
非关系型数据库:
NoSql、Cloudant、MongoDb、redis、HBase

两种数据库之间的区别:

1、数据存储方式不同。

关系型数据库:一般都有固定的表结构,并且需要通过DDL语句来修改表结构,不是很容易进行扩展

非关系型数据库:存储是基于文档的,K-V键值对的,还有基于图等。对于数据的格式十分灵活没有固定的表结构,方便扩展

2. 可扩展性

关系型数据库: 纵向扩展也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了。

非关系型数据库: 横向扩展。非关系型数据存储天然就是分布式的,NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。

3. 数据一致性

非关系型数据库一般强调的是数据最终一致性,
而不像关系型数据库一样强调数据的强一致性

非关系型数据库可能更多的偏向于OLAP场景,
(On-Line Analytical Processing)
联机分析处理OLAP:支持复杂的分析操作,侧重决策支持

关系型数据库更多偏向于OLTP场景。
(On-Line Transaction Processing)
联机事务处理OLTP:主要是基本的、日常的事务处理


操作数据库

1.首先打开数据库
打开mongodb数据库
2.使用数据库
使用的时候需要重新打开一个cmd命令行。之前打开的数据库的cmd命令行 不能关闭
使用之前首先需要执行mongo执行, 执行完以后,才可以对数据库进行增删改查操作
mongo执行

   //创建 student 数据库
> use student
switched to db student
> db
student
//显示当前的数据库
> show dbs
admin  0.000GB
local  0.000GB
//创建的数据库 student不在数据库的列表中
// 要显示它的话 往student 数据库中插入一些数据。
> db.student.insert({
   
   "name":"111"})
WriteResult({
   
    "nInserted" : 1 })
> show dbs
admin    0.000GB
local    0.000GB
student  0.000GB
//db 显示当前正在操作的数据库
> db
student
//创建 集合db.createCollection("name","options");
//options :capped 固定集合大小 true/false
//size(可选):为集合指定最大值,即字节数。当 capped为true时 size必须写。   
//max (可选):指定固定集合中包含文档的最大数量。
> db.createCollection("teacher")
{
   
    "ok" : 1 }
//显示集合
> show collections  
student
teacher
//创建一个集合mycol。整个集合空间大小6142800B,文档最大个数为1000个。
> db.createCollection("mycol",{
   
   capped:true,size:6142800,max:1000})
{
   
    "ok" : 1 }
//创建数据库 demo
>use demo
switched to db demo
> db.abc
demo.abc//创建 abc集合
> db.abc.insert({
   
   "id":"q"})
> WriteResult({
   
    "nInserted" : 1 })
> show collections
abc
//删除集合
> db.abc.drop()
true
//删除数据库
> show dbs//先看当前数据库有哪些
admin    0.000GB
demo     0.000GB
local    0.000GB
student  0.000GB
> db//再看当前操作的数据库是什么 use xxxx可以切换数据库
demo
> db.dropDatabase()//删除数据库
{
   
    "dropped" : "demo", "ok" : 1 }
> show dbs
admin    0.000GB
local    0.000GB
student  0.000GB
>

增删改查操作

1.插入文档操作

使用 insert() 或 save() 方法向集合中插入文档

save():如果 _id 主键存在则更新数据,如果不存在就插入数据。该方法新版本中已废弃,可以使用 db.collection.insertOne() 或 db.collection.replaceOne() 来代替。

insert 和save 的不同点

如果新增的数据中存在主键,
insert()则会抛 org.springframework.dao.DuplicateKeyException 异常

save()则更改原来的内容为新内容。
但是该方法新版本中已废弃,db.collection.insertOne() 或 db.collection.replaceOne() 来代替。


//db.collection.insertOne()单个文档插入到集合中。
//如果文档没有指定_id字段,MongoDB会自动将_id字段与ObjectId值添加到新文档。
> db.teacher.insertOne({
   
   "name":"zs","age":"12"})
{
   
   
        "acknowledged" : true,
        "insertedId" : ObjectId("608ab5432f1035dac70050ca")
}
//insertMany([{}])方法将多个文档插入到集合中
> db.teacher.insertMany([{
   
   "name":"zs"},{
   
   "name":"as"},{
   
   "name":"ss"}])
{
   
   
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("608ab49c2f1035dac70050c6"),
                ObjectId("608ab49c2f1035dac70050c7"),
                ObjectId("608ab49c2f1035dac70050c8")
        ]
}
>

2.更新文档

> show dbs
admin    0.000GB
local    0.000GB
student  0.000GB
> use student
switched to db student
> show collections
mycol
student
teacher

> db.teacher.find()
{
   
    "_id" : ObjectId("608ab3f92f1035dac70050c5")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值