Mongoose Model的方法


 

1.添加方法 create(doc(s),[callback])

var mongoose=require("mongoose");
mongoose.connect("mongodb://127.0.0.1/mongoose_test",{useMongoClient:true});
//數據庫打開的監聽事件
mongoose.connection.once("open",function(){
    console.log("數據庫連接成功~~~");
});
//數據庫關閉的監聽事件
mongoose.connection.once("close",function(){
    console.log("數據庫已斷開~~~");
});

//創建Schema 對象
var Schema =mongoose.Schema;
var stuSchema=new Schema({
    name:String,
    age:Number,
    gender:{//數據類型是String,默認值是 female
        type:String,
        default:"female"
    },
    address:String
});

/**
 * 有了Model,我們就可以來對數據庫進行增刪改查的操作了
 */
var StuModel =mongoose.model("students",stuSchema);

/**
 * Model.create(doc(s),[callback])
 * 用來創建一個或多個文檔並添加到數據庫中
 * 參數:
 *    doc(s) 可以是一個文檔對象,也可以是一個文檔的數組
 *    callback 當操作完成以后調用的回調函數 ,回調函數可以省略不寫
 */
StuModel.create([
    {
        name:"豬八戒",
        age:28,
        gender:"male",
        address:"高老庄"
    },{
        name:"唐僧",
        age:16,
        gender:"male",
        address:"女兒國"
    }
],function(err){
    if(!err){
        console.log("插入成功!");
    }
});

2.查詢方法

/**
 * 查詢所有符號條件的文檔
 * Model.find(conditions,[projection],[options],[callback])
 * 根據文檔的id屬性查詢文檔
 * Model.findById(id,[projection],[options],[callback])
 * 查詢符合條件的第一個文檔
 * Model.findOne([conditions],[projection],[options],[callback])
 * 
 * conditions 查詢的條件
 * projection 投影
 * options 查詢選項(skip limit)
 * callback 回調函數,查詢結果會通過回調函數返回
 *          回調函數必須傳,如果不傳回調函數,壓根不會查詢
 */
StuModel.find({name:"唐僧"},function(err,docs){
    if(!err){
        console.log(docs);
    }
});

 

 

  •  投影(投影有兩種方式)
//投影
StuModel.find({},{name:1,_id:0},function(err,docs){
    if(!err){
        console.log(docs);
    }
});

 

 

 投影也可以這樣寫(-_id表示不顯示):

StuModel.find({},"name age -_id",function(err,docs){
    if(!err){
        console.log(docs);
    }
});

 

 

  •  跳過 skip

    //跳過
    StuModel.find({},"name age -_id",{skip:3},function(err,docs){
        if(!err){
            console.log(docs);
        }
    });

  • 顯示數量 limit

    //跳過
    StuModel.find({},"name age -_id",{skip:2,limit:1},function(err,docs){
        if(!err){
            console.log(docs);
        }
    });

  • 查詢一個文檔 findOne()
    //查詢一個
    StuModel.findOne({name:"孫悟空"},function(err,doc){
        if(!err){
            console.log(doc);
        }
    });

  • 通過Id查詢一個文檔 findById()
    //通過Id查詢一個文檔
    StuModel.findById("6014aa020e3c7334146e06a6",function(err,doc){
        if(!err){
            console.log(doc);
        }
    });

注意:通過find()查詢的結果,返回的對象,就是Document,文檔對象

          Document對象是Model的實例

          比如:doc就是StuModel的對象。

//檢查是否是實例
console.log(doc instanceof StuModel);

3.修改

var mongoose=require("mongoose");
mongoose.connect("mongodb://127.0.0.1/mongoose_test",{useMongoClient:true});
//數據庫打開的監聽事件
mongoose.connection.once("open",function(){
    console.log("數據庫連接成功~~~");
});
//數據庫關閉的監聽事件
mongoose.connection.once("close",function(){
    console.log("數據庫已斷開~~~");
});

//創建Schema 對象
var Schema =mongoose.Schema;
var stuSchema=new Schema({
    name:String,
    age:Number,
    gender:{//數據類型是String,默認值是 female
        type:String,
        default:"female"
    },
    address:String
});

/**
 * 有了Model,我們就可以來對數據庫進行增刪改查的操作了
 */
var StuModel =mongoose.model("students",stuSchema);


/**
 *  用來修改一個或多個文檔
 * Model.update(conditions,doc,[options],[callback])
 * 用來修改一個文檔
 * Model.update(conditions,doc,[options],[callback])
 * 用來修改多個文檔
 * Model.update(conditions,doc,[options],[callback])
 * 
 *  參數:
 *      conditions 查詢條件
 *      doc 修改后的對象
 *      options 配置參數
 *      callback 回調函數
 */

 StuModel.updateOne({name:"孫悟空"},{$set:{age:100}},function(err){
    if(!err){
        console.log("修改成功~");
    }
 });

 

 

 4.刪除(一般不會用,實際開發中或設計邏輯刪除字段)

var mongoose=require("mongoose");
mongoose.connect("mongodb://127.0.0.1/mongoose_test",{useMongoClient:true});
//數據庫打開的監聽事件
mongoose.connection.once("open",function(){
    console.log("數據庫連接成功~~~");
});
//數據庫關閉的監聽事件
mongoose.connection.once("close",function(){
    console.log("數據庫已斷開~~~");
});

//創建Schema 對象
var Schema =mongoose.Schema;
var stuSchema=new Schema({
    name:String,
    age:Number,
    gender:{//數據類型是String,默認值是 female
        type:String,
        default:"female"
    },
    address:String
});

/**
 * 有了Model,我們就可以來對數據庫進行增刪改查的操作了
 */
var StuModel =mongoose.model("students",stuSchema);


/** 
 * 刪除一個或多個文檔
 * Model.remove(conditions,[callback])
 * 刪除一個文檔
 * Model.deleteOne(conditions,[callback])
 * 刪除多個文檔
 * Model.deleteMany(conditions,[callback])
*/
//1.查看
StuModel.findOne({name:"豬八戒"},function(err,doc){
    if(!err){
        console.log(doc);
    }
})
//2.刪除
StuModel.remove({name:"豬八戒"},function(err){
    if(!err){
        console.log("刪除成功~");
    }
});
//3.在查看
StuModel.findOne({name:"豬八戒"},function(err,doc){
    if(!err){
        console.log(doc);
    }
})

 

 5.統計文檔數量

var mongoose=require("mongoose");
mongoose.connect("mongodb://127.0.0.1/mongoose_test",{useMongoClient:true});
//數據庫打開的監聽事件
mongoose.connection.once("open",function(){
    console.log("數據庫連接成功~~~");
});
//數據庫關閉的監聽事件
mongoose.connection.once("close",function(){
    console.log("數據庫已斷開~~~");
});

//創建Schema 對象
var Schema =mongoose.Schema;
var stuSchema=new Schema({
    name:String,
    age:Number,
    gender:{//數據類型是String,默認值是 female
        type:String,
        default:"female"
    },
    address:String
});

/**
 * 有了Model,我們就可以來對數據庫進行增刪改查的操作了
 */
var StuModel =mongoose.model("students",stuSchema);


/**
 * 統計符合查詢條件的文檔的數量
 * Model.count(conditions,[callback])
 */
StuModel.count({},function(err,count){
    if(!err){
        console.log(count);
    }
});

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM