简介
MongoDB是一个开源的NoSQL数据库,相比MySQL那样的关系型数据库,它更显得轻巧、灵活,非常适合在数据规模很大、事务性不强的场合下使用。
它是一个对象数据库,没有表、行等概念,也没有固定的模式和结构,所有的数据以文档的形式存储(文档,就是一个关联数组式的对象,它的内部由属性组成,一个属性对应的值可能是一个数、字符串、日期、数组,甚至是一个嵌套的文档。),数据格式就是JSON。
Mongoose是MongoDB的一个对象模型工具,是基于node-mongodb-native开发的MongoDB nodejs驱动,可以在异步的环境下执行。
同时它也是针对MongoDB操作的一个对象模型库,封装了MongoDB对文档的的一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单。
安装使用mongoose
- 安装mongoose:
npm install mongoose
- 引用mongoose:
var mongoose = require("mongoose");
- 使用 mongoose 连接数据库:
var db = mongoose.connect("mongodb://user:pass@localhost:port/database");
- 检查默认数据库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, _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, } });
|