我们先来了解一下非关系型数据库和关系型数据库,首先需要了解一下关系型数据库,比如,我们所熟知的 Oracle、mysql等。

关系型数据库和非关系型数据库

  1. 实质: 非关系型数据库的实质,其实非关系型数据库是传统关系型数据库的功能的阉割版,通过减少用不到的或者很少使用的功能,来大幅度提高产品的性能。
  2. 价格:目前的非关系型数据库基本都是免费的
  3. 功能: 实际开发中,很多业务需求,其实并不需要完整的关系型数据库功能,非关系型数据库的功能就足够使用了。这种情况下,使用性能更高、成本更低的非关系型数据库当然是更明智的选择。

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的存储结构

以前我们的关系型数据库的数据结构都是顶层是库,库下面是表,表下面是数据。但是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修改器

Meils
1.6k 声望157 粉丝

前端开发实践者