文章目录

  • 前言
  • 一、MongoDB是什么?
  • 1.1简介
  • 1.2业务应用场景
  • 1.3体系结构
  • 二、基本常用命令
  • 2.1数据库操作
  • 2.2集合操作
  • 三.文档基本CRUD
  • 3.1 文档的插入
  • 3.2 文档的基本查询
  • 3.3 文档的更新
  • 3.4 删除文档
  • 总结



前言

前段时间因为在忙面试以及其他的事情,好久没写博客啦,由于公司需要,学习mongdb数据库,mongdb的语法还是比较简单的,如果学过mysql和JS应该能很快上手


提示:以下是本篇文章正文内容,下面案例可供参考

一、MongoDB是什么?

1.1简介

MongoDB是一个开源、高性能、无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种。是最
像关系型数据库(MySQL)的非关系型数据库。
它支持的数据结构非常松散,是一种类似于 JSON 的 格式叫BSON,所以它既可以存储比较复杂的数据类型,又相当的灵活。
MongoDB中的记录是一个文档,它是一个由字段和值对(field:value)组成的数据结构。MongoDB文档类似于JSON对象,即一个文档认
为就是一个对象。字段的数据类型是字符型,它的值除了使用基本的一些类型外,还可以包括其他文档、普通数组和文档数组。

1.2业务应用场景

传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。
解释:“三高”需求:
• High performance - 对数据库高并发读写的需求。
• Huge Storage - 对海量数据的高效率存储和访问的需求。
• High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求。
而MongoDB可应对“三高”需求。
具体的应用场景如:
1)社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。
2)游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、高效率存储和访问。
这些应用场景中,数据操作方面的共同特点是:
(1)数据量大
(2)写入操作频繁(读写都很频繁)
(3)价值较低的数据,对事务性要求不高
对于这样的数据,我们更适合使用MongoDB来实现数据的存储。

1.3体系结构

mongodb 海量数据存储 mongodb数据库_nosql


mongodb 海量数据存储 mongodb数据库_mongodb_02

二、基本常用命令

2.1数据库操作

选择和创建数据库的语法格式: use 数据库名称
如果数据库不存在则自动创建,例如,以下语句创建 school 数据库

use school

查看有权限查看的所有的数据库命令 :`

show dbs 或show databases

查看当前数据库命令

db

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

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

MongoDB 删除数据库的语法格式如下:

use school
db.dropDatabase()   //删除那个数据库,首先要进入那个数据库

2.2集合操作

基本语法格式: db.createCollection(name)
参数说明: name: 要创建的集合名称
例如:创建一个名为 student 的普通集合

db.createCollection("student")

查看当前库中的表:show tables命令

show collections 或 show tables

当向一个集合中插入一个文档的时候,如果集合不存在,则会自动创建集合。

集合删除语法格式如下:

db.collection.drop() 或db.集合.drop()

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

db.student.drop()

三.文档基本CRUD

3.1 文档的插入

使用insert() 或 save() 方法向集合中插入文档,语法如下:

db.collection.insert( 
<document or array of documents>, 
{
   writeConcern: <document>, 
   ordered: <boolean> 
   }
 )

要向sutdent的集合(表)中插入一条测试数据:

db.student.insert({"sno":201821122097,"sname":"czx","sage":21})

提示:
1)comment集合如果不存在,则会隐式创建
2)mongo中的数字,默认情况下是double类型,如果要存整型,必须使用函数NumberInt(整型数字),否则取出来就有问题了。
3)插入当前日期使用 new Date() 4)插入的数据没有指定 _id ,会自动生成主键值
5)如果某字段没值,可以赋值为null,或不写该字段。

执行后,如下,说明插入一个数据成功了。

WriteResult({ "nInserted" : 1 })

注意:

  1. 文档中的键/值对是有序的。
  2. 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。 3. MongoDB区分类型和大小写。
  3. MongoDB的文档不能有重复的键。
  4. 文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符
    -----批量插入
db.student.insert([
{"sno":201821122097,"sname":"czx","sage":21},
{"sno":201821122098,"sname":"lxt","sage":21},
])

3.2 文档的基本查询

(1)查询所有
如果我们要查询student集合的所有文档,我们输入以下命令

db.student.find() 或db.student.find({})

其他操作看图

mongodb 海量数据存储 mongodb数据库_数据库_03

3.3 文档的更新

(1)覆盖的修改

db.student.update({sname:“lxt”},{age:9999})

mongodb 海量数据存储 mongodb数据库_nosql_04


执行后,我们会发现,这条文档除了likenum字段其它字段都不见了

(2)局部修改

db.student.update({sname:“lxt”},{$set:{sage:9999}})

mongodb 海量数据存储 mongodb数据库_数据库_05


(3)批量的修改

//默认只修改第一条数据 
db.student.update({sname:"lxt"},{$set:{sage:9999}})
 //修改所有符合条件的数据
 db.comment.update({userid:"1003"},{$set:{sage:9999}},{multi:true})

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

3.4 删除文档

删除文档的语法结构:

db.集合名称.remove(条件)

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

db.student.remove({})

如果删除sname="lxt"的记录,输入以下语句

db.student.remove({sname:"lxt"})

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了mongdb的使用,后续会继续进行更新