Mongodb数据库
Posted zhixuChen333
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb数据库相关的知识,希望对你有一定的参考价值。
文章目录
前言
前段时间因为在忙面试以及其他的事情,好久没写博客啦,由于公司需要,学习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体系结构
二、基本常用命令
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 })
注意:
- 文档中的键/值对是有序的。
- 文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。 3. MongoDB区分类型和大小写。
- MongoDB的文档不能有重复的键。
- 文档的键是字符串。除了少数例外情况,键可以使用任意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({})
其他操作看图
3.3 文档的更新
(1)覆盖的修改
db.student.update({sname:“lxt”},{age:9999})
执行后,我们会发现,这条文档除了likenum字段其它字段都不见了
(2)局部修改
db.student.update({sname:“lxt”},{$set:{sage:9999}})
(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的使用,后续会继续进行更新
以上是关于Mongodb数据库的主要内容,如果未能解决你的问题,请参考以下文章
ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项