• nodejs实践-MongoDB


    nodejs实践-MongoDB
    laiqun@msn.cn

    Contents

    1. 特点:

    • 使用BSON存储数据
    • 支持相对丰富的查询操作
    • 支持索引
    • 副本集
    • 分片
    • 无模式
    • 部署简单方便

    2. 开始使用

    1. 检查是否安装 which mongod

    2. 创建目录 mkdir -p /data/db

    3. 检测磁盘空间是否够用 df -lh

    4. 启动

      当前进程的方法 mongod –dbpath=/data/db –port=27017

      守护进程的方法 mongod –dbpath=/data/db –port=27017 –fork –syslog

      日志的查看 tail -f /var/log/message 监控文件的修改 指定日志 –log=

      结束后台 kill 进程号

      运行客户端 mongo 127.0.0.1:27017

      show dbs

      use part9

      db.users.insert({“username”:“Sid”});

      show collections

      db.users.find()

      db.users.insert({“username”:“Zoe”,“group”:“reporter”});

      db.users.find().count();

      db.users.insert({“username”:“Zoe”,“group”:“programmer”});

      ad.users.find({“_id”:ObjectID(“”)})

      //条件 更新内容 更新配置

      ad.users.update({“username”:“Zoe”},{$set:{“group”:“writer”},{multi:true}});

      //未指定 则属性就没了 必须把所有值指定 条件
      db.users.save({“_id”:ObjectId(“xxxx”)},“group”:“reporter”);

      db.users.remove({“group”:“reporter”})

      db.users.remove({“group”:“reporter”},true)//第二个参数是单行删除

      db.users.remvoe({})//删除全部文档

      db.user.drop();//索引和文档都删除

      3. 使用Mongoose操作MongoDB

    是一种ORM模块,将对象对应为结果

    • 安装 cnpm install mongoose

    编写 model.js Model 与 Schema

    var mongoose = require('mongoose');
    var uri = 'mongodb://username:password@hostname:port/databasename';
    uri = "mongodb://localhost/part9";
    
    mongoose.connect(uri);
    var BookSchema = new mongoose.Schema({
      name:String,
      author:String,
      publichTime:Date
    });
    
    mongoose.model('Book',BookSchema);

    编写 insert.js

    var mongoose = require('mongoose');
    require('./model.js');//将model.js中的代码执行一遍var Book = mongoose.model('Book');//返回Schemavar book = new Book({
       name ="sod",
       author:"green",
       publishTime: new Date()
    });
    
    book.author ='Jim';
    book.save(funtion(err){
       console.log('save states',err?'failed':'success');
    });

    编写find.js

    var mongoose = require('mongoose');
    require('./model.js');//将model.js中的代码执行一遍var Book = mongoose.model('Book');//返回Schema
    book.find({},funtion(err,docs){
       if(err){
           console.log('err',err);
           return ;
       }
       console.log('result',docs);
    });

    编写findone.js

    var mongoose = require('mongoose');
    require('./model.js');//将model.js中的代码执行一遍var Book = mongoose.model('Book');//返回Schema
    book.findOne({author:"Jim"},funtion(err,doc){
       if(err){
           console.log('err',err);
           return ;
       }
       doc.author = 'Jame';
       doc.save();
       console.log('findOne result',doc);
    });

    编写remvoe.js

    var mongoose = require('mongoose');
    require('./model.js');//将model.js中的代码执行一遍var Book = mongoose.model('Book');//返回Schema//第一个参数为条件
    book.findOne({author:"Jim"},funtion(err,doc){
       if(err){
           console.log('err',err);
           return ;
       }
       
       if(doc){
           doc.remove();
       }
       
    });

    编写condition.js

    var mongoose = require('mongoose');
    require('./model.js');//将model.js中的代码执行一遍var Book = mongoose.model('Book');//返回Schema//第一个参数为条件  联合条件var cond = {
       $or:[   //or 可以改为and 还有大于小于等操作
         {author:"Jane"},
         {author:"Jim"}
       ]
    };
    book.find(cond,funtion(err,docs){
       if(err){
           console.log('err',err);
           return ;
       }
       
    console.log('cond:',cond,'result:',docs)   
    });

    4. 在express中使用,组织数据库相关代码

    使用脚手架生成框架

    express mongooseExpress

    config.js

    module.exports ={
      mongodb:"mongodb://localhost/part9"
    };

    编写mongoose.js

    var mongoose = require('mongoose');
    var config = require('./config.js');
    
    module.exports = function(){
      var db = mongoose.connect(config.mongodb);
     
      return db;
    }





  • 相关阅读:
    《插件式GIS应用框架的设计与实现》一书中一个小问题
    ArcGIS API for Silverlight 入门学习笔记(一)hello world 补充问题
    ArcGIS API for Silverlight 入门学习笔记(一):hello world
    20120906CSS学习笔记
    ASP Response
    20120830笔记
    ASP Request
    201299日记
    20120907学习笔记
    LINKSERVER跨服务器之间的数据拷贝
  • 原文地址:https://www.cnblogs.com/laiqun/p/5499437.html
Copyright © 2020-2023  润新知