成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

mongoose 鏈接數(shù)據(jù)庫(kù),增刪改查

lanffy / 2227人閱讀

摘要:根據(jù)個(gè)人編碼習(xí)慣,僅供參考如中途看的有點(diǎn)蒙圈,可以轉(zhuǎn)到官網(wǎng)查看引入模塊連接數(shù)據(jù)庫(kù)鏈接狀態(tài)數(shù)據(jù)庫(kù)鏈接成功為了查看是否鏈接成功所以做一個(gè)回調(diào)創(chuàng)建模式對(duì)象例將賦值給變量創(chuàng)建對(duì)象官網(wǎng)創(chuàng)建通過來創(chuàng)建代表的是數(shù)據(jù)庫(kù)中的集合,通過才能對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作可在

根據(jù)個(gè)人編碼習(xí)慣,僅供參考

如中途看的有點(diǎn)蒙圈,可以轉(zhuǎn)到官網(wǎng)查看

引入模塊
var mongoose = require("mongoose");
連接數(shù)據(jù)庫(kù)
mongoose.connect("mongodb://localhost/mongoose_test");    
鏈接狀態(tài)
mongoose.connection.once("open",function () {
    console.log("數(shù)據(jù)庫(kù)鏈接成功");
});  

為了查看是否鏈接成功所以做一個(gè)回調(diào)

創(chuàng)建Schema(模式)對(duì)象

例:

var Schema = mongoose.Schema; //將mongoose.Schema 賦值給變量
//創(chuàng)建Schema對(duì)象
var stuSchema = new Schema({
    name:String,
    age:Number,
    gender:{
        type:String,
        default:"female"
    },
    address:String
});

官網(wǎng):

創(chuàng)建Model 通過Schema來創(chuàng)建Model

Model代表的是數(shù)據(jù)庫(kù)中的集合 ,通過Model 才能對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,可在官網(wǎng)查看

語(yǔ)法:

mongoose.model(modelName, schema);
參數(shù):modelName:要映射的集合名
特點(diǎn):mongoose:會(huì)自動(dòng)將集合名變成復(fù)數(shù)  

例:

var StuModel = mongoose.model("student", stuSchema);
增加(向數(shù)據(jù)庫(kù)插入文檔)

語(yǔ)法:

Model.create(doc(s),[callback]);//用來創(chuàng)建一個(gè)文檔并添加到數(shù)據(jù)庫(kù)中

參數(shù):

dec(s) 可以是一個(gè)文檔對(duì)象也是可以是一個(gè)文檔對(duì)象的數(shù)組

[callback] 可選的 回調(diào)函數(shù)

例:

StuModel.create({
    name:"白骨精",
    age:16,
    address:"白骨洞"
},function (err) {
    if(!err){
        console.log("插入成功");
    }
}); 
查詢

語(yǔ)法:

Model.find(conditions,[projection],[options],[callback]);//查詢所有符合條件的文檔  總會(huì)返回一個(gè)數(shù)組 
Model.findById(id,[projection],[options],[callback]);//根據(jù)文檔的id屬性查詢文檔
Model.findOne([conditions],[projection],[options],[callback]);//查詢符合條件的第一個(gè)文檔 總是返回一個(gè)具體的文檔對(duì)象

參數(shù):

conditions 查詢條件

projection 投影(需要獲取到的字段)

第一種方式 {name:1,_id:0}

第二種方式 "name -_id"

options 查詢的選項(xiàng)(skip limit

callback 回調(diào)函數(shù) 查詢結(jié)果通過回調(diào)函數(shù)返回 回調(diào)函數(shù)必傳 如果不傳回調(diào)函數(shù) 壓根就不會(huì)查詢

例:

StuModel.find({name:"唐僧"},function (err,docs) {
   if(!err){
       console.log(docs[0].name);
   }
});
StuModel.find({},{name:1, _id:0},function (err,docs) {
    if(!err){
        console.log(docs);
    }
});
StuModel.findById("5bac79be5fb5454418668515",function (err,doc) {
    if(!err){
        //通過find()查詢的結(jié)果 返回的對(duì)象就是 Document 文檔對(duì)象
        //Document 對(duì)象是Model的實(shí)例
        console.log(doc instanceof StuModel)
    }
});
修改

語(yǔ)法:

Model.update(conditions,doc,[options],[callback]);//用來修改一個(gè)或者多個(gè)文檔
Model.updateMany(conditions,doc,[options],[callback]);//用來修改多個(gè)文檔
Model.updateOne(conditions,doc,[options],[callback]);//用來修改一個(gè)文檔
Model.replaceOne(conditions,doc,[options],[callback]);//替換一個(gè)

參數(shù):

conditions 查詢條件

doc 修改后的對(duì)象

options 配置參數(shù)

callback 回調(diào)函數(shù)

刪除

語(yǔ)法:

Model.remove(conditions,[callback]);//刪除一個(gè)或者多個(gè)
Model.deleteOne(conditions,[callback]);//刪除一個(gè)
Model.deleteMany(conditions,[callback]);//刪除多個(gè)

例:

StuModel.remove({name:"白骨精"},function (err) {
    if(!err){
        console.log("刪除成功");
    }
})
統(tǒng)計(jì)文檔數(shù)量

語(yǔ)法:

Model.count(conditions,[callback])

例:

StuModel.count({},function (err,count) {
    if(!err){
        console.log(count);
    }
});   
Document方法

Document 和 集合中的文檔一一對(duì)應(yīng) Document 是Model 的實(shí)例,通過Model查詢到結(jié)果都是Document

創(chuàng)建一個(gè)Document
var stu = new StuModel({
    name:"蘇小小",
    age:22,
    gender:"male",
    address:"上海"
});
Document 的方法

語(yǔ)法:

 Model#save([options],[fn]);

例:

stu.save(function (err) {
    if(!err){
        console.log("保存成功")
    }
});   
修改,刪除

語(yǔ)法:

修改對(duì)象: update(update,[options],[callback]);
刪除對(duì)象: remove([callback]);   

例:

StuModel.findOne({},function (err,doc) {
    if(!err){
        /**
         * update(update,[options],[callback])
             * - 修改對(duì)象
         * remove([callback])
         *      - 刪除對(duì)象
         */
       // console.log(doc);
       //  doc.update({$set:{age:28}},function (err) {
       //      if(!err){
       //          console.log("修改成功");
       //      }
       //  })
        /**
         * 或者
         */
        // doc.age = 18;
        // doc.save();
        
        
        
        // doc.remove(function (err) {
        //     if(!err){
        //         console.log("大師兄再見");
        //     }
        // })


        /**
         * get()
         *  - 獲取文檔中的指定屬性值
         * set(name,value)
         *  - 設(shè)置文檔的指定屬性值
         *  id
         *     - 獲取文檔的_id屬性值
         *  toJSON()
         *      - 轉(zhuǎn)換為一個(gè)json對(duì)象
         *  toObject()
         *      - 將Document 對(duì)象轉(zhuǎn)換為一個(gè)普通的js對(duì)象,注意所有的Document對(duì)象的方法或?qū)傩远疾荒苁褂昧?         */

        //console.log(doc.get("name"))
        /**
         * 或
         */
        // console.log(doc.name)


        //doc.set("name","豬無(wú)能");
        /**
         * 或
         */
      //  doc.name = "天蓬元帥";

        // console.log(doc._id);
        // var j = doc.toJSON();
        // console.log(typeof j);
        var o =doc.toObject()
        console.log(o)

    }
});
模塊化
新建一個(gè)js文件,用來連接數(shù)據(jù)庫(kù)
/**
 *定義一個(gè)模塊,用來連接mongodb數(shù)據(jù)庫(kù)
 */
var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/mongoose_test");
mongoose.connection.once("open",function () {
    console.log("數(shù)據(jù)庫(kù)鏈接成功");
});
-------------------------------------------------------------------
在新建一個(gè)js文件,用來創(chuàng)建student模型
/**
 *用來定義student模型
 */
var mongoose = require("mongoose");

var Schema = mongoose.Schema;

var stuSchema = new Schema({
    name:String,
    age:Number,
    gender:{
        type:String,
        default:"female"
    },
    address:String

});
/**
 *定義模型
 */
var StuModel = mongoose.model("student", stuSchema);

/**
 * 暴露出去
 */
module.exports = StuModel;
----------------------------------------------------------------
在需要調(diào)用的地方引入就可以了
/**
 *定義一個(gè)模塊,用來連接mongodb數(shù)據(jù)庫(kù)
 */
var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/mongoose_test");
mongoose.connection.once("open",function () {
    console.log("數(shù)據(jù)庫(kù)鏈接成功");
});


文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/19319.html

相關(guān)文章

  • 使用express+mongoose對(duì)mongodb實(shí)現(xiàn)刪改操作

    摘要:項(xiàng)目地址寫在開頭本文主要分享我如何使用對(duì)實(shí)現(xiàn)增刪改查操作,感謝社區(qū)所有精品文章的幫助,以及的開源項(xiàng)目對(duì)我的啟發(fā)。我們這個(gè)項(xiàng)目是建立一個(gè)班級(jí)學(xué)生管理系統(tǒng),能夠?qū)W(xué)生的姓名及學(xué)號(hào)進(jìn)行增刪改查的操作。 項(xiàng)目地址:https://github.com/jrainlau/mongoose_cru... 寫在開頭 本文主要分享我如何使用express+mongoose對(duì)mongodb實(shí)現(xiàn)增刪改查...

    Markxu 評(píng)論0 收藏0
  • node express mongoose簡(jiǎn)單實(shí)現(xiàn)全棧之刪改

    摘要:作為一個(gè)有志向的前端,怎么能不搞搞全棧呢。。。地址歡迎大家多多交流前端技術(shù)啊,如果大家喜歡的話,請(qǐng)給我一個(gè)小小的哦 作為一個(gè)有志向的前端,怎么能不搞搞全(zhuang)棧(bi)呢。。。說搞咱就搞啊,后端就用node,數(shù)據(jù)庫(kù)就用mongodb,前端呢,呃,再搞個(gè)node的web框架express,思路搞定,開始搭建我們的環(huán)境,搭建之前還是先看看我們的目標(biāo)和成果 項(xiàng)目的目標(biāo)和成果 sh...

    AndroidTraveler 評(píng)論0 收藏0
  • 使用 mongoose 操作 mongodb 刪改

    摘要:使用操作的測(cè)試文件連接數(shù)據(jù)庫(kù)引入連接指定的數(shù)據(jù)庫(kù)只有數(shù)據(jù)庫(kù)是變化的獲取連接對(duì)象綁定連接完成的監(jiān)聽用來提示連接成功得到對(duì)應(yīng)特定集合的字義描述文檔結(jié)構(gòu)定義與集合對(duì)應(yīng),可以操作集合通過或其實(shí)例對(duì)集合數(shù)據(jù)進(jìn)行操作通過實(shí)例的添加數(shù)據(jù)通過的查詢多個(gè)或一 使用 mongoose 操作 mongodb 的測(cè)試文件 連接數(shù)據(jù)庫(kù)1.1 引入 mongoose1.2 連接指定的數(shù)據(jù)庫(kù)(URL 只有數(shù)據(jù)庫(kù)是...

    renweihub 評(píng)論0 收藏0
  • mongoDB初階系列三:mongoose

    摘要:前言上篇初階系列二中的增刪改查中講解了用驅(qū)動(dòng)來對(duì)數(shù)據(jù)進(jìn)行增刪改查,本篇將繼續(xù)前進(jìn),依舊通過增刪改查來講解如何用更順暢的操控。查下面這段代碼對(duì)集合進(jìn)行搜索,并輸出每項(xiàng)任務(wù)的唯一和描述,等打印完成后,關(guān)閉數(shù)據(jù)庫(kù)連接。 前言 上篇 mongoDB初階系列二:node中的增刪改查 中講解了用node驅(qū)動(dòng)來對(duì)數(shù)據(jù)進(jìn)行增刪改查,本篇將繼續(xù)前進(jìn),依舊通過增刪改查來講解如何用mongoose更順暢的操...

    Null 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<