首先要確保你已經MongoDB的和Node.js的安裝。javascript
mongoose官網http://www.nodeclass.com/api/mongoose.html#quick_starthtml
具體用法查文檔java
接下來使用npm
如下命令從命令行安裝Mongoose :node
$ npm install mongoose
如今說咱們喜歡模糊的小貓,而且想要記錄咱們在MongoDB中見過的每一隻小貓。咱們須要作的第一件事是在咱們的項目中包含貓鼬,並test
在咱們本地運行的MongoDB實例上打開與數據庫的鏈接。mongodb
// getting-started.js var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test');
咱們有一個到本地主機上運行的測試數據庫的掛起鏈接。若是咱們成功鏈接或發生鏈接錯誤,咱們如今須要獲得通知:數據庫
var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function (callback) { // yay! });
一旦咱們的鏈接打開,咱們的回調將被調用。爲簡潔起見,咱們假設全部如下代碼都在此回調中。npm
使用Mongoose,全部內容都來自Schema。讓咱們參考它並定義咱們的小貓。api
var kittySchema = mongoose.Schema({ name: String })
到如今爲止還挺好。咱們有一個有一個屬性的模式name
,這將是一個 String
。下一步是將咱們的模式編譯成模型。服務器
var Kitten = mongoose.model('Kitten', kittySchema)
模型是咱們構建文檔的類。在這種狀況下,每一個文檔將成爲一個小貓,其特性和行爲在咱們的模式中聲明。讓咱們建立一個小貓文檔,表明咱們在外面人行道上遇到的小傢伙:數據結構
var silence = new Kitten({ name: 'Silence' }) console.log(silence.name) // 'Silence'
小貓能夠喵喵叫,那麼讓咱們來看看如何在咱們的文檔中添加「speak」功能:
// NOTE: methods must be added to the schema before compiling it with mongoose.model() kittySchema.methods.speak = function () { var greeting = this.name ? "Meow name is " + this.name : "I don't have a name" console.log(greeting); } var Kitten = mongoose.model('Kitten', kittySchema)
添加到methods
模式屬性的函數會被編譯到Model
原型中並顯示在每一個文檔實例上:
var fluffy = new Kitten({ name: 'fluffy' }); fluffy.speak() // "Meow name is fluffy"
咱們有說話的小貓!可是咱們仍然沒有保存任何東西給MongoDB。經過調用其保存方法能夠將每一個文檔保存到數據庫中。回調的第一個參數將是一個錯誤,若是有任何發生。
fluffy.save(function (err, fluffy) { if (err) return console.error(err); fluffy.speak(); });
說時間過去了,咱們想要展現咱們見過的全部小貓。咱們能夠經過咱們的小貓模型訪問全部的小貓文檔。
Kitten.find(function (err, kittens) { if (err) return console.error(err); console.log(kittens) })
咱們只是將全部的小貓都記錄在咱們的數據庫中。若是咱們想按名稱過濾咱們的小貓,Mongoose支持MongoDB豐富的查詢語法。
》》2.MongoDb服務器鏈接mongoose的用法Kitten.find({ name: /^Fluff/ }, callback)
var mongoose = require("mongoose");
//第一步: mongoose來鏈接上mongodb的服務器
//建立鏈接 nodejs-mongodb
//mongodb://localhost:27017/test test:數據庫名稱
const dbUrl = "mongodb://localhost:27017/test";
//創建鏈接
mongoose.connect(dbUrl);
//監聽是否鏈接成功 connected
mongoose.connection.on("connected",(socket)=>{
console.log(`${dbUrl} 鏈接成功了!`)
})
//第二步:操做mongodb/test->collections
//mongodb test goods
//step1:須要在nodejs下建立一個和goods集合對應的一個數據結構 schema
// mongodb goods集合
// nodejs goods一樣的一結構 _id,title,des,price
// nodejs goodsschema <- mongoose -> goods 綁定
// 綁定model->CURD->SYSN database
//建立一個schma,用來建立js與mongodb中的collectons的對應schema
var Schema = mongoose.Schema;
//經過schema來建立一個集合在程序中的代理
//userSchema-> users
var userSchema = new Schema({
name:{type:String},
age:{type:Number},
sex:{type:String}
})
//綁定userSchema與數據庫中的collection users
var userModel = mongoose.model("users",userSchema);
//第三步,操做userModel->mongoose
//CURD
//1.添加一個新的文檔 document
function SaveUser() {
var user = new userModel({
name:"lisi",
age:20,
sex:"male"
});
//save來保存數據`
user.save((error,result)=>{
console.log(result)
})
}
//2.刪除用戶信息:根據條件來刪除
function deleteUser() {
userModel.remove({"name":"lisi"}).exec((error,result)=>{
console.log(result)
})
}
//修改用戶信息
function updateUser() {
userModel.update({"name":"zhangsan"},{$set:{"age":30}}).exec((error,result)=>{
console.log(result)
})
}
//查詢用戶
function getUsers() {
userModel.find({"name":"xxx"}).exec((error,results)=>{
console.log(results)
})
}
//查詢分頁: skip limit
// skip: 跳過多少行記錄
// limit: 限制顯示的行數 skip(pageindex*pagesize).limit(pagesize)
function getPager(pageIndex,pageSize) {
userModel.find({}).skip(pageIndex*pageSize).limit(pageSize).exec((error,result)=>{
console.log(result)
})
}
getPager(4,1);
3.MongoDB具體簡單用法
詳情看http://www.runoob.com/mongodb/mongodb-tutorial.html