背景
学习MongoDB,并做笔记整理,以便于用到时查看。
MogoDB
- NoSQL Database(JS)
- 使用方便,想存就存,相取就取
- 是MEAN中的M(数据)
安装
https://www.mongodb.com/downl… 选择相应系统安装包
安装mongoose
- 创建一个文件夹,并npm init –yes,创建package.js
- npm install mongoose –save //安装mongoose模块
- 创建test文件夹,并在其中创建connection.js文件
connection.js(连接数据库)
- const mongoose=require(‘mongoose’)//引入mogonese
- mongoose.connect(‘mongodb://localhost/test’)//连接MongoDB
- mongoose.connection.once(‘open’,function () { console.log(‘数据库连接成功’)
}).on(‘error’,function (error) { console.log(‘连接失败:’,error);
});//测试数据库是否连接成功 - 在项目根目录中创建models文件夹,并在其中创建mariochar.js
mariochar.js
- const mongoose=require(‘mongoose’);//引入mongoose
- const Schema=mongoose.Schema;//获取规范类
- const MarioCharSchema=new Schema({ name:String, weight:Number
});//规范数据格式 - const MarioChar=mongoose.model(‘Mario’,MarioCharSchema);//创建数据模型
Mocha(测试mongoose的框架)
- 在test目录下创建demo_test.js文件
- npm install mocha –save //安装mocha模块
- const mocha=require(‘mocha’);//导入模块
- const assert=require(‘assert’);//引入断言
- describe(‘demo test’,function () { //创建需要测试的任务
it(‘测试两个数的值是否相等’,function () { //使用断言 assert(2+3===5); })
});//测试时,对当前测试的一个描述
存储数据
- 将demo_test.js重命名为saving_test.js
- const MarioChar=require(‘../models/mariochar’);
- const mocha=require(‘mocha’);
- const assert=require(‘assert’);
- describe(‘存储数据’,function () { //创建需要测试的任务 it(‘saving
data’,function () { //准备需要存储的数据 var char=new MarioChar({ name:’Mario’
}) //存储数据 char.save().then(function (result) {
console.log(result.name); assert(result.isNew===false); }) }) });
robomongo(mogodb可视化工具)
查询数据
- 在test目录下创建finding_test文件
- const MarioChar=require(‘../models/mariochar’);
- const mocha=require(‘mocha’);
- const assert=require(‘assert’);
- describe(‘查找数据’,function () { //创建需要测试的任务 it(‘finding
data’,function (done) {
MarioChar.findOne({name:’Mario’}).then(function (result) {
console.log(result.name); done(); }) }) });
删除数据
it('deleating data from db', function () {
MarioChar.findOneAndRemove({name:'Mario'})
.then(function (result) { assert(result===null); })
});
更新数据
it('更新语句中的操作语句', function (done) {
MarioChar.findOneAndUpdate({name:'Mario'},{$inc:{weight:1}}).then(function (result) {
console.log(result.weight);
done();
})
});