摘要:价格目前的非关系型数据库基本都是免费的功能实际开发中,很多业务需求,其实并不需要完整的关系型数据库功能,非关系型数据库的功能就足够使用了。目的是为应用提供扩展的高性能的数据存储方案。我们平时大多还是使用修改器来修改下一节我们来认识修改器
我们先来了解一下非关系型数据库和关系型数据库,首先需要了解一下关系型数据库,比如,我们所熟知的 Oracle、mysql等。
关系型数据库和非关系型数据库
实质: 非关系型数据库的实质,其实非关系型数据库是传统关系型数据库的功能的阉割版,通过减少用不到的或者很少使用的功能,来大幅度提高产品的性能。
价格:目前的非关系型数据库基本都是免费的
功能: 实际开发中,很多业务需求,其实并不需要完整的关系型数据库功能,非关系型数据库的功能就足够使用了。这种情况下,使用性能更高、成本更低的非关系型数据库当然是更明智的选择。
MongoDB简介:Mongodb 是一个基于分布式文件存储的数据库,由C++编写。 目的是为WEB应用提供扩展的高性能的数据存储方案。它是介于关系型和非关系型数据库中间的产品,他支持的数据结构比较松散,是类似于json的Bson格式,因此可以存储比较复杂的数据类型。
mongo shell
// 启动mongodb 之后
var x="Hello World"
print(x) // 注意这里虽然执行的时js指令,但是不能使用console.log , 只能使用print()
function jspang(){
return "JSPang";
}
print(jspang())
MongoDB的存储结构
以前我们的关系型数据库的数据结构都是顶层是库,库下面是表,表下面是数据。但是MongoDB有所不同,库下面是集合,集合下面是文档,可以看下面这张图进行了解一下。
基础Shell命令
show dbs :显示已有数据库,如果你刚安装好,会默认有local、admin(config),这是MongoDB的默认数据库,我们在新建库时是不允许起这些名称的。
use admin: 进入数据库,也可以理解成为使用数据库
show collections: 显示数据库中的集合
db:显示当前位置,也就是你当前使用的数据库名称,这个命令算是最常用的,因为你在作任何操作的时候都要先查看一下自己所在的库,以免造成操作错误。
用js文件写mongo命令
首先启动 mongodb
// getTask.js
var username = "zjj";
var time = Date.parse(new Date());
var jsonData = {"loginUser": username, "loginTime": time}
var db = connect("login") // 连接数据库
db.login.insert(jsonData)
print("log print success")
在该目录下执行 mongo getTask.js
批量注入
// 批量数据插入是以数组的方式进行的
db.test.insert([
{"_id":1},
{"_id":2},
{"_id":3}
]);
// 注意一次插入不要超过48M,向.zip和大图片什么的尽量用静态存储,MongoDB存储静态路径就好,这也算是一个规则。
// 使用数组批量插入的效率比使用循环插入的效率高的多
Update常见错误
// demo01.js
var workmate1={
name:"JSPang",
age:33,
sex:1,
job:"前端",
skill:{
skillOne:"HTML+CSS",
SkillTwo:"JavaScript",
SkillThree:"PHP"
},
regeditTime:new Date()
}
var workmate2={
name:"ShengLei",
age:30,
sex:1,
job:"JAVA后端",
skill:{
skillOne:"HTML+CSS",
SkillTwo:"J2EE",
SkillThree:"PPT"
},
regeditTime:new Date()
}
var workmate3={
name:"MinJie",
age:20,
sex:1,
job:"UI设计",
skill:{
skillOne:"PhotoShop",
SkillTwo:"UI",
SkillThree:"Word+Excel+PPT"
},
regeditTime:new Date()
}
var db=connect("company")
var workmateArray=[workmate1,workmate2,workmate3]
db.workmate.insert(workmateArray)
print("[SUCCESS]: The data was inserted successfully.");
// 构造数据
// 运行demo01
mongo
> load("./demo01.js");
var db=connect("company")
db.workmate.update({name:"MinJie"},{sex:0})
print("[update]: The data was updated successfully");
// 我们会发现需要修改的那条数据已经被大变样了,只剩下了只有 sex:0
正确的修改方法
// demo02.js
var db=connect("company")
var workmate3={
name:"MinJie",
age:20,
sex:0,
job:"UI设计",
skill:{
skillOne:"PhotoShop",
SkillTwo:"UI",
SkillThree:"Word+Excel+PPT"
},
regeditTime:new Date()
}
db.workmate.update({name:"MinJie"},workmate3)
print("[update]: The data was updated successfully");
但是如果每次都这么来改,多麻烦呢。我们平时大多还是使用update修改器来修改
下一节我们来认识update修改器
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/19219.html
摘要:命令检查创建的集合命令从数据库中删除集合。命令从集合查询数据将在非结构化的方式显示所有的文件。如果显示结果是格式化的,那么可以用除了方法还有方法,仅返回一个文档。文档排序方法,方法接受一个包含字段列表以及排序顺序的文档。 MongoDB启动服务器 第一步:下载安装包 第二步:解压下载到的安装包,找到bin目录下面全部.exe文件 第三步:在该目录下新建data文件夹,它将会作为数据存...
摘要:复制一份,命名为,修改文件内容如下注意改为我们第一步创建的目录,端口号改为这个随意,只要该端口没被占用即可,表示这是一个配置服务器,另外由于我们的配置服务器要做成备份集,所以要设置。 分片是指将数据拆分,拆分后存放在不同的机器上的过程,以此来降低单个服务器的压力,同时也解决单个服务器硬盘空间不足的问题,让我们可以用廉价的机器实现高性能的数据架构。有的小伙伴不理解分片和副本集的差异,一言...
摘要:小结是聚合管道查询使用的方法,参数是数组,每个数组元素就是一个,中运用操作符对数据进行处理后再交由下一个,直到没有下个,就输出最终的结果,而数据的处理则是通过使用操作符,本文先简单介绍了一下有哪些常用的操作符,下一篇再详细说明。 前言:一般查询可以通过find方法,但如果是比较复杂的查询或者数据统计的话,find可能就无能为力了,这时也许你需要的是aggregate. 什么是聚合管道(...
摘要:开公众号差不多两年了,有不少原创教程,当原创越来越多时,大家搜索起来就很不方便,因此做了一个索引帮助大家快速找到需要的文章系列处理登录请求前后端分离一使用完美处理权限问题前后端分离二使用完美处理权限问题前后端分离三中密码加盐与中异常统一处理 开公众号差不多两年了,有不少原创教程,当原创越来越多时,大家搜索起来就很不方便,因此做了一个索引帮助大家快速找到需要的文章! Spring Boo...
阅读 3751·2021-11-18 10:07
阅读 1843·2021-11-04 16:08
阅读 1806·2021-11-02 14:43
阅读 1327·2021-10-09 09:59
阅读 1114·2021-09-08 10:43
阅读 1396·2021-09-07 09:59
阅读 1291·2019-12-27 11:56
阅读 1407·2019-08-30 15:56