• Mongoose入门


    简介

    Mongoose是MongoDB的对象模型工具。nodejs和mongodb结合的主要原因是有相同的数据存储格式JSON,在应用层使用具有非常好的连续性,无需太多的代码用来进行数据转换等工作。

    就像PHP和JAVA连接Mysql一样,nodejs连接mongodb也需要有驱动driver。mongodb的driver还是有一些的,其中最著名的就是native driver: https://github.com/mongodb/node-mongodb-native, 该项目由mongodb的创建公司10gen进行维护,它提供了一些基础的连接和数据操作的API。

    今天我们说的mongoose其实是在mongodb-native之上的一个封装,使得我们对于数据的操作是建立在模型的基础上。Mongoose有一些关键概念:

    1. Schema(模式): 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
    2. Model(模型): Schema发布生成的模型,具有抽象属性和行为的数据库操作对
    3. Entity(实体): Model创建的实体,他的操作也会影响数据库

    它们之间的关系是:Schema生成ModelModel创造EntityModelEntity都可对数据库操作造成影响,但ModelEntity更具操作性。

    基本操作

    创建连接

    var mongoose =require('mongoose');//引用mongoose模块
    mongoose.connect('mongodb://localhost/test');//连接数据库
    //或者
    var db = mongoose.createConnection('localhost','test');
    db.once('open',function(){
         //一次打开记录
    });

    定义Schema

    var userSchema = new mongoose.Schema({
      name: {
      first: String,
      last: { type: String, trim: true }
      },
      age: { type: Number, min: 0}
    });

    将Schema发布为Model

    var PUser = mongoose.model('PowerUsers', userSchema);

    使用Model创建Entity

    var johndoe = new PUser ({
      name: { first: 'John', last: '  Doe   ' },
      age: 25
    });

    保存Entity到数据库

    johndoe.save(function (err) {if (err) console.log ('Error on save!')});

    查询

    PUser.find({}).exec(function(err, result) {
      if (!err) {
        // handle result
      } else {
        // error handling
      };
    });

    查询的语法为:

    Model.find(query, fields, options, callback);

    其中 Model 为 Mongoose 模型对象。

    query参数与 MongoDB 查询条件一致。

    fields 指定查询的键。

    options 选项,有 limit, skip, populate 等。

    callback 则是回调函数,查询完毕后执行。该回调函数支持传入两个参数,分别为 err 和 result。

    更多使用方法参考官方文档: http://mongoosejs.com/docs/guide.html

  • 相关阅读:
    ZOJ 1450
    HDU 3932
    POJ 3348
    POJ 1873
    POJ 1228
    POJ 2007
    POJ 1113
    POJ 1696
    POJ 1329
    HDU 3432
  • 原文地址:https://www.cnblogs.com/cubika/p/3501887.html
Copyright © 2020-2023  润新知