Node操作MongoDB

作者: 程序员有话说 | 来源:发表于2016-09-19 23:47 被阅读0次

    1. 使用mongodb

    • 链接 MongoDB
    var MongoClient = require('mongodb').MongoClient, assert = require('assert');
    // Connection URL 
    var url = 'mongodb://localhost:27017/myproject';
    // Use connect method to connect to the Server 
    MongoClient.connect(url, function(err, db) {
      assert.equal(null, err);
      console.log("Connected correctly to server");
      db.close();
    });
    //公共模块可以提取(Node模块创建以及使用)
    
    • 插入文档
    //Inserting a Document
    var insertDocuments = function(db, callback) {
      // Get the documents collection 
      var collection = db.collection('documents');
      // Insert some documents 
      collection.insertMany([
        {a : 1}, {a : 2}, {a : 3}
      ], function(err, result) {
        assert.equal(err, null);
        assert.equal(3, result.result.n);
        assert.equal(3, result.ops.length);
        console.log("Inserted 3 documents into the document collection");
        callback(result);
      });
    }
    var MongoClient = require('mongodb').MongoClient, assert = require('assert');
    // Connection URL 
    var url = 'mongodb://localhost:27017/myproject';
    // Use connect method to connect to the Server 
    MongoClient.connect(url, function(err, db) {
        if(!err){
            assert.equal(null, err); //单元测试模块
            // assert.equal(a,b,c);理解:假设a和b相等则相安无事,如果a和b不相等则输出c语句。
            console.log("Connected correctly to server");
            insertDocuments(db, function() {
                db.close();
            });
        }else{
            console.log(err);
        }
    });
    
    • 更新文档
    // Updating a document
    var updateDocument = function(db, callback) {
      // Get the documents collection 
      var collection = db.collection('documents');
      // Update document where a is 2, set b equal to 1 
      collection.updateOne({ a : 2 }  //只更新最先满足条件的一条记录
        , { $set: { b : 1 } }, function(err, result) {
        assert.equal(err, null);
        assert.equal(1, result.result.n);
        console.log("Updated the document with the field a equal to 2");
        callback(result);
      });  
    }
    var MongoClient = require('mongodb').MongoClient, assert = require('assert');
    // Connection URL 
    var url = 'mongodb://localhost:27017/myproject';
    // Use connect method to connect to the Server 
    MongoClient.connect(url, function(err, db) {
      assert.equal(null, err);
      console.log("Connected correctly to server");
     // insertDocuments(db, function() {
        updateDocument(db, function() {
          db.close();
        });
     // });
    });
    
    • 查询文档
    var findDocuments = function(db, callback) {
        // Get the documents collection 
        var collection = db.collection('documents');
        // Find some documents 
        collection.find({}).toArray(function(err, docs) {
            assert.equal(err, null);
            assert.equal(4, docs.length);//注意:文档长度
            console.log("Found the following records");
            console.dir(docs);
            callback(docs);
        });
    }
    var MongoClient = require('mongodb').MongoClient, assert = require('assert');
    // Connection URL 
    var url = 'mongodb://localhost:27017/myproject';
    // Use connect method to connect to the Server 
    MongoClient.connect(url, function(err, db) {
        assert.equal(null, err);
        console.log("Connected correctly to server");
     
        //insertDocuments(db, function() {
        //  updateDocument(db, function() {
        //      deleteDocument(db, function() {
                    findDocuments(db, function() {
                        db.close();
                    });
        //      });
        //  });
        //});
    });
    

    2. 使用mongoose

    备注:使用之前一定要安装node.js 和 mongodb

    NPM 包管理地址:https://www.npmjs.com/package/mongoose

    //mongoose 链接
    var mongoose = require('mongoose');
    mongoose.connect('mongodb://localhost/project');
    //通过Schema创建一个模式
    var Schema = mongoose.Schema;
    //实例化自定义文档方法
    var blogSchema = new Schema({
      title:  String,
      author: String,
      body:   String,
      hidden: Boolean,
      meta: {
        votes: Number,
        favs:  Number
      }
    });
    //创建一个模型
    var Blog = mongoose.model('Blog', blogSchema);
    //存储数据
    var Blog = new Blog({
        title: '痛并快乐着',
        author: '白岩松',
        body: '痛并快乐着一本经历',
        hidden: false,
        meta: {
            votes: 12,
            favs:  30
        }
    })
    //保存数据库
    Blog.save(function (err) {
        if (err) {
            console.log(err);
        } else {
            console.log('saved OK!');
        }
        mongoose.connection.close();
    });
    
    • 查询数据
    //mongoose 链接
    var mongoose = require('mongoose');
    mongoose.connect('mongodb://localhost/project');
    //通过Schema创建一个模式
    var Schema = mongoose.Schema;
    //实例化自定义文档方法
    var blogSchema = new Schema({
      title:  String,
      author: String,
      body:   String,
      hidden: Boolean,
      meta: {
        votes: Number,
        favs:  Number
      }
    });
    //创建一个模型
    var BlogModel = mongoose.model('Blog', blogSchema);
    //查询条件
    var where = {author:"白岩松"};
    // 待返回的字段
    var fields   = {title : 1, author : 1, body : 1}; 
    var options  = {};
    BlogModel.find(where, fields, options, function(error, result){
        if(error) {
            console.log(error);
        } else {
            console.log(result);
        }
        //关闭数据库链接
        mongoose.connection.close();
    });
    
    • 修改数据
    //mongoose 链接
    var mongoose = require('mongoose');
    mongoose.connect('mongodb://localhost/project');
    //通过Schema创建一个模式
    var Schema = mongoose.Schema;
    //实例化自定义文档方法
    var blogSchema = new Schema({
      title:  String,
      author: String,
      body:   String,
      hidden: Boolean,
      meta: {
        votes: Number,
        favs:  Number
      }
    });
    //创建一个模型
    var BlogModel = mongoose.model('Blog', blogSchema);
    var conditions = {author : '白岩松'};
    var update     = {$set : {age : 27, title : 'model_demo_title_update'}};
    var options    = {upsert : true};
    BlogModel.update(conditions, update, options, function(error){
        if(error) {
            console.log(error);
        } else {
            console.log('update ok!');
        }
        //关闭数据库链接
        mongoose.connection.close();
    });
    
    • 删除数据
    //mongoose 链接
    var mongoose = require('mongoose');
    mongoose.connect('mongodb://localhost/project');
    //通过Schema创建一个模式
    var Schema = mongoose.Schema;
    //实例化自定义文档方法
    var blogSchema = new Schema({
      title:  String,
      author: String,
      body:   String,
      hidden: Boolean,
      meta: {
        votes: Number,
        favs:  Number
      }
    });
    //创建一个模型
    var BlogModel = mongoose.model('Blog', blogSchema);
    var conditions = {title: 'model_demo_title_update'};
    BlogModel.remove(conditions, function(error){
        if(error) {
            console.log(error);
        } else {
            console.log('remove ok!');
        }
        //关闭数据库链接
       mongoose.connection.close();
    });
    

    相关文章

      网友评论

        本文标题:Node操作MongoDB

        本文链接:https://www.haomeiwen.com/subject/jkgnettx.html