博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Nodejs六】关于mongodb那些事
阅读量:6575 次
发布时间:2019-06-24

本文共 7601 字,大约阅读时间需要 25 分钟。

mongodb

非关系型数据库nosql. 没有行列的说法,只有collection 文档 相对老的数据的说法就是表和记录。

安装:

brew update brew install mongodb复制代码

安装的路径:

cd /usr/local/Cellar/mongodb/3.4.3/bin复制代码

启动:brew services start mongodb 关闭:brew services stop mongodb 浏览器打开网址:localhost:27017 并在bin的文件目录下运行命令./mongo 命令show dbs可以查看已经创建的数据库

test 是我建的一个数据库show dbs //显示数据库db // 查看已选定的数据库use test //使用某个数据库 没有则新建db.createColletion(‘user’) //创建集合user 是我创建的一个集合db. user.insert({‘name’:’byc’}) //插入一条记录db. user.find() //查找所有记录db.user.findOne();db.dropDatabase() //删除数据库db. user.drop //删除指定集合show collections //显示所有集合db. user.save({}) //插入记录db.test.update({‘_id’,1},{
$set:{name:’test’,age:20}})db. user.remove({}) //删除所有集合for(var i=1;i<=10;i++){db.test.insert({
"name":"king"+i,"age":i})} //循环插入10条记录db.user.find().pretty() //格式化显示查询结果db.user.find().count() //查询数据条数db.user.find({
"age":5}) /查找age是5的条目db.user.find({
"age":{
$gt:5}}) //查找age大于5的条目db.user.find({
"age":{
$gt:5}}).sort({
"age":1}) //查找age大于5的条目且升序排列db.user.find({
"age":{
$gt:5}}).sort({
"age":1}) //查找age大于5的条目且升序排列db.user.find({
"age":{
$gt:5}}).sort({
"age”:-1}) //查找age大于5的条目且降序排列复制代码

图形化管理工具:

nodejs连接数据库: 安装依赖pack: npm install mongoose 如果不安装则报错找不到mongodb e.g:

var  mongodb = require('mongodb');var  server  = new mongodb.Server('localhost', 27017, {auto_reconnect:true});var  db = new mongodb.Db('test', server, {safe:true});//连接dbdb.open(function(err, db){    if(!err){        console.log('connect db');        // 连接Collection(可以认为是mysql的table)        // 第1种连接方式        // db.collection('mycoll',{safe:true}, function(err, collection){        //     if(err){        //         console.log(err);        //     }        // });        // 第2种连接方式        db.createCollection('user', {safe:true}, function(err, collection){            if(err){                console.log(err);            }else{                //新增数据                // var tmp1 = {id:'1',title:'hello',number:1};       //          collection.insert(tmp1,{safe:true},function(err, result){       //              console.log(result);       //          });                   //更新数据                   // collection.update({title:'hello'}, {
$set:{number:3}}, {safe:true}, function(err, result){ // console.log(result); // }); // 删除数据 // collection.remove({title:'hello'},{safe:true},function(err,result){ // console.log(result); // }); // console.log(collection); // 查询数据 var tmp1 = {title:'hello'}; var tmp2 = {title:'world'}; collection.insert([tmp1,tmp2],{safe:true},function(err,result){ console.log(result); }); collection.find().toArray(function(err,docs){ console.log('find'); console.log(docs); }); collection.findOne(function(err,doc){ console.log('findOne'); console.log(doc); }); } }); // console.log('delete ...'); // //删除Collection // db.dropCollection('mycoll',{safe:true},function(err,result){ // if(err){ // console.log('err:'); // console.log(err); // }else{ // console.log('ok:'); // console.log(result); // } // }); }else{ console.log(err); }});复制代码

mongodb 通过 mongoose来建模

1.Schema(模式定义) e.g.:

var mongoose = require('mongoose');var Schema = mongoose.Schema;var MovieSchema = new Schema({    director: String,    title: String,    language: String,    country: String,    summary: String,    flash: String,    poster: String,    year: Number,    meta: {        createAt: {            type: Date,            default: Date.now()        },        updateAt: {            type: Date,            default: Date.now()        }    }});MovieSchema.pre('save', function(next) {    if (this.isNew) {        this.meta.createAt = this.meta.updateAt = Date.now();    }    else {        this.meta.updateAt = Date.now();    }    next();});MovieSchema.statics = {    fetch: function(cb) {        return this            .find({})            .sort('meta.updateAt')            .exec(cb);    },    findById: function(id, cb) {        return this            .findOne({_id: id})            .exec(cb);    }};module.exports = MovieSchema;复制代码

2.Model(编译模型) e.g.:

var mongoose = require('mongoose');var MovieSchema = require('../schemas/movie');var Movie = mongoose.model('Movie', MovieSchema);module.exports = Movie;复制代码

3.Documents (文档实例化)

var mongoose = require('mongoose');var dbUrl = 'mongodb://localhost/imooc';mongoose.connect(dbUrl);复制代码

路由index.js:

var express = require('express');var router = express.Router();var Movie = require('../models/movie');/* GET home page. */router.get('/', function (req, res, next) {    Movie.fetch(function (err, movies) {        if (err) {            console.log(err);        }        res.render('index', {            title: 'imooc首页',            movies: movies        });    });});router.get('/movie/:id', function (req, res, next) {    var id = req.params.id;    Movie.findById(id, function (err, movie) {        if (err) {            console.log(err);        }        res.render('detail', {            title: "imooc 详情页",            movie: movie        });    });});module.exports = router;复制代码

路由users.js:

var express = require('express');var router = express.Router();var Movie = require('../models/movie');var _ = require('underscore');/* POST new movie. */router.post('/movie/new', function (req, res, next) {    var id = req.body.movie._id;    var movieObj = req.body.movie;    var _movie;    if (id !== "undefined") {        Movie.findById(id, function (err, movie) {            if (err) {                console.log(err);            }            _movie = _.extend(movie, movieObj);            _movie.save(function (err, movie) {                if (err) {                    console.log(err);                }                res.redirect('/movie/' + movie._id);            });        });    } else {        _movie = new Movie({            director: movieObj.director,            title: movieObj.title,            country: movieObj.country,            language: movieObj.language,            year: movieObj.year,            poster: movieObj.poster,            flash: movieObj.flash,            summary: movieObj.summary,        });        _movie.save(function (err, movie) {            if (err) {                console.log(err);            }            res.redirect('/movie/' + movie._id);        });    }});router.get('/movie', function (req, res, next) {    res.render('admin', {        title: "imooc 后台录入页",        movie: {            title: '',            country: '',            year: '',            poster: '',            flash: '',            director: '',            summary: '',            language: ''        }    });});router.get('/list', function (req, res, next) {    Movie.fetch(function (err, movies) {        if (err) {            console.log(err);        }        res.render('list', {            title: 'imooc管理员列表',            movies: movies        });    });});router.get('/movie/update/:id', function (req, res, next) {    var id = req.params.id;    Movie.findById(id, function (err, movie) {        if (err) {            console.log(err);        }        res.render('admin', {            title: "imooc 后台更新页",            movie: movie        });    });});module.exports = router;复制代码

转载地址:http://yogjo.baihongyu.com/

你可能感兴趣的文章
互联网架构师必备技术 Docker仓库与Java应用服务动态发布那些事
查看>>
Intellij IDEA 2018.2 搭建Spring Boot 应用
查看>>
SNMP AGENT函数介绍
查看>>
[Usaco2005 Open]Disease Manangement 疾病管理 BZOJ1688
查看>>
【Android视图效果】分组列表实现吸顶效果
查看>>
多文件上传示例源码(默认支持各种类型,包括图片)
查看>>
命令行基本操作学习笔记(一)
查看>>
「试着读读 Vue 源代码」工程目录及本地运行(断点调试)
查看>>
A Visual Git Reference
查看>>
Tomcat 关于表单提交数据量过大导致数据丢失的问题
查看>>
金融数据库
查看>>
翻了100个程序员的朋友圈, 发现个个都是套路王
查看>>
为什么 ++[[]][+[]]+[+[]] = 10?
查看>>
ContentProvider
查看>>
Android 自定义GridView网格布局
查看>>
基于 jQuery & CSS3 实现智能提示输入框光标位置
查看>>
我的友情链接
查看>>
ThreadLocal分析
查看>>
mysql优化:连接数
查看>>
PHP 时间操作 / 跳转问题
查看>>