mongoose入门

Author Avatar
julytian 2月 07, 2017
  • 在其它设备中阅读本文章

简介

MongoDB是一个开源的NoSQL数据库,相比MySQL那样的关系型数据库,它更显得轻巧、灵活,非常适合在数据规模很大、事务性不强的场合下使用。

它是一个对象数据库,没有表、行等概念,也没有固定的模式和结构,所有的数据以文档的形式存储(文档,就是一个关联数组式的对象,它的内部由属性组成,一个属性对应的值可能是一个数、字符串、日期、数组,甚至是一个嵌套的文档。),数据格式就是JSON

Mongoose是MongoDB的一个对象模型工具,是基于node-mongodb-native开发的MongoDB nodejs驱动,可以在异步的环境下执行。

同时它也是针对MongoDB操作的一个对象模型库,封装了MongoDB对文档的的一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单。

安装使用mongoose

  1. 安装mongoose:npm install mongoose
  2. 引用mongoose:var mongoose = require("mongoose");
  3. 使用 mongoose 连接数据库: var db = mongoose.connect("mongodb://user:pass@localhost:port/database");
  4. 检查默认数据库test,是否可以正常连接成功
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var mongoose = require("mongoose");
var db = mongoose.connect("mongodb://localhost:27017/test");
/**
* 连接异常
*/
db.connection.on("error", function (error) {
console.log("数据库连接失败:" + error);
});
/**
* 连接成功
*/
db.connection.on("open", function () {
console.log("数据库连接成功");
});

集合

在MongoDB中,多个 Document 可以组成 Collection (以下简称集合),多个集合又可以组成数据库(database)。

文档 :

是MongoDB键值对的一个有序集,在JavaScript里文档被表示成对象。
非常类似于关系型数据库管理系统中的行。

集合 :

由一组文档组成,如果将MongoDB中的一个文档比喻成关系型数据库中的一行,那么一个集合就相当于一张表。

Schema

一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力。

如何定义Schema

1
2
3
4
5
6
var PersonSchema = new mongoose.Schema({
name : { type:String },
age : { type:Number, default:0 },
time : { type:Date, default:Date.now },
email: { type:String,default:''}
});

mongoose基本属性类型有:字符串、日期型、数值型、布尔型(Boolean)、null、数组、内嵌文档等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var ExampleSchema = new Schema({
name: String,
binary: Buffer,
living: Boolean,
updated: Date,
age: Number,
mixed: Schema.Types.Mixed, //该混合类型等同于nested
_id: Schema.Types.ObjectId, //主键
_fk: Schema.Types.ObjectId, //外键
array: [],
arrOfString: [String],
arrOfNumber: [Number],
arrOfDate: [Date],
arrOfBuffer: [Buffer],
arrOfBoolean: [Boolean],
arrOfMixed: [Schema.Types.Mixed],
arrOfObjectId: [Schema.Types.ObjectId]
nested:{
stuff:String,
}
});