摘要:文檔是的核心概念,是鍵值對(duì)的一個(gè)有序集,在里文檔被表示成對(duì)象。創(chuàng)建集合數(shù)據(jù)庫(kù)中的集合名稱(chēng)當(dāng)我們對(duì)其添加數(shù)據(jù)時(shí)如果已經(jīng)存在,則會(huì)保存到其目錄下,如果未存在,則會(huì)創(chuàng)建集合,然后在保存數(shù)據(jù)。使用創(chuàng)建,如下示例連接成功許巍男保存成功保存失敗參考
mongoose簡(jiǎn)介
mongoose網(wǎng)站:https://mongoosejs.com/
為什么要用MongooseMongoose就是一個(gè)讓我們可以通過(guò)Node來(lái)操作MongoDB的一個(gè)模塊。Mongoose的優(yōu)勢(shì)
Mongoose本質(zhì)是一個(gè)對(duì)象文檔模型(ODM)庫(kù),
他對(duì)Node原生的MongoDB模塊進(jìn)行了一部?jī)?yōu)化封裝,并且提供了更多的功能。
可以像操作對(duì)象一樣操作數(shù)據(jù)庫(kù)
可以為文檔創(chuàng)建一個(gè)模式結(jié)構(gòu)(Schema)
可以對(duì)模型中的文檔/文檔進(jìn)行驗(yàn)證
數(shù)據(jù)可以通過(guò)類(lèi)型轉(zhuǎn)換為對(duì)象模型
可以使用中間件來(lái)應(yīng)用業(yè)務(wù)邏輯掛鉤
比Node原生的MongoDB驅(qū)動(dòng)更容易
使用Mongoose下載安裝mongoose模塊
cnpm install mongoose --save
引用mongoose:
var mongoose =require("mongoose");
使用"mongoose"連接數(shù)據(jù)庫(kù):
var db =mongoose.connect("mongodb://user:pass@localhost:port/database");
執(zhí)行下面代碼檢查默認(rèn)數(shù)據(jù)庫(kù)test,是否可以正常連接成功?
var mongoose =require("mongoose"); var db =mongoose.connect("mongodb://localhost/m_data"); db.connection.on("error",function (error) { console.log("數(shù)據(jù)庫(kù)連接失敗:" + error); }); db.connection.on("open",function () { console.log("數(shù)據(jù)庫(kù)連接成功!"); }); db.connection.once("close", ()=>{ console.log("連接已經(jīng)斷開(kāi)成功!") })mongoose基本使用 mongoose的幾個(gè)新的對(duì)象
在MongoDB中,多個(gè)Document可以組成Collection(以下簡(jiǎn)稱(chēng)集合),多個(gè)集合又可以組成數(shù)據(jù)庫(kù)。我們想要操作MongoDB數(shù)據(jù),那就得先要具備上面所說(shuō)的包含數(shù)據(jù)的“文檔”,文檔又是什么意思呢,請(qǐng)看如下介紹。
文檔 —— 是MongoDB的核心概念,是鍵值對(duì)的一個(gè)有序集,在JavaScript里文檔被表示成對(duì)象。同時(shí)它也是MongoDB中數(shù)據(jù)的基本單元,非常類(lèi)似于關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)中的行,但更具表現(xiàn)力。
集合 —— 由一組文檔組成,如果將MongoDB中的一個(gè)文檔比喻成關(guān)系型數(shù)據(jù)庫(kù)中的一行,那么一個(gè)集合就相當(dāng)于一張表。
Schema—— 一種以文件形式存儲(chǔ)的數(shù)據(jù)庫(kù)模型骨架,無(wú)法直接通往數(shù)據(jù)庫(kù)端,也就是說(shuō)它不具備對(duì)數(shù)據(jù)庫(kù)的操作能力,僅僅只是定義數(shù)據(jù)的類(lèi)型,可以說(shuō)是數(shù)據(jù)屬性模型(傳統(tǒng)意義的表結(jié)構(gòu)),又或著是“集合”的模型骨架。
mongoose中任何任何事物都是從Schema開(kāi)始的。每一個(gè)Schema對(duì)應(yīng)MongoDB中的一個(gè)集合(collection)。Schema中定義了集合中文檔(document)的樣式。
定義一個(gè)Schema(表/ 模式對(duì)象)//新建Schema 定義規(guī)則/字段的規(guī)則 let Schema= mongoose.Schema; //定義personSchema的字段(規(guī)則)需要new一下 有點(diǎn)像構(gòu)造函數(shù)的樣子 let personSchema= new Schema({ name: String, sex: String, age: Number });
基本屬性類(lèi)型有:
String
Number
Date
Boolean
Buffer
ObjectId
Mixed
Array
Model—— 由Schema構(gòu)造生成的模型,根據(jù)Schema定義的數(shù)據(jù)類(lèi)型規(guī)則,可操作具體的符合改規(guī)則的數(shù)據(jù)。
創(chuàng)建model(集合)let personModel= mongoose.model("person", personSchema);
person:數(shù)據(jù)庫(kù)中的集合名稱(chēng),當(dāng)我們對(duì)其添加數(shù)據(jù)時(shí)如果person已經(jīng)存在,則會(huì)保存到其目錄下,如果未存在,則會(huì)創(chuàng)建person集合,然后在保存數(shù)據(jù)。
//4. 插入文檔 personModel.create({ name: "張寧樂(lè)", sex: "男", age: 18 }, (err)=>{ if(!err){ console.log("插入成功!") }else{ throw err; } });mongoose 插入和查詢(xún)
mongoose查找數(shù)據(jù)的一些方法:
https://mongoosejs.com/docs/a...
personModel.create([ {name:"張逗逗",age: 2,sex: "男"}, {name:"牛嘻嘻",age: 2,sex: "女"} ], (err)=>{ if(!err){ console.log("插入成功!") }else{ throw err; } })查詢(xún)
Model.find()
personModel.find({name: "張寧樂(lè)"}, (err, data)=>{ if(!err){ console.log(data) }else{ throw err; } })查詢(xún)所有
Model.find({}, callback)
personModel.find({}, (err, data)=>{ if(!err){ console.log(data) }else{ throw err; } })
也可以選擇查找數(shù)據(jù)的條件(0隱藏 1顯示 id默認(rèn)顯示) 和MongoDB在命令行中的使用方法一樣
//查詢(xún)時(shí)只顯示name personModel.find({}, {name: 1, _id: 0}, (err,data)=>{ if(!err){ console.log(data) }else{ throw err; } })
在find() 中 skip(查詢(xún)開(kāi)始的位置)和limit(增加的條數(shù))也可以使用
personModel.find({}, {name: 1, _id: 0, age: 1}, {skip: 0, limit: 2}, (err, data)=>{ //只顯示name 和 age 從第1開(kāi)始 每次查詢(xún)2條 if(!err){ console.log(data) }else{ throw err; } })
MongoDB的find()、findOne() 等命令在 mongoose里都可以使用
具體可參考 :https://mongoosejs.com/docs/a...
參考: https://mongoosejs.com/docs/a...
修改方法:Model.update()
Model.updateMany()
Model.updateOne()
Model.watch()
personModel.update({name: "張寧樂(lè)"}, {$set: {age: 20}}, (err, data)=>{ if(!err){ console.log("修改成功!") console.log(data) }else{ throw err; } })刪除方法
Model.remove()
Model.deleteMany()
Model.deleteOne()
personModel.remove({name:"牛嘻嘻"}, (err)=>{ if(!err){ console.log("刪除成功!") }else{ throw err; } })統(tǒng)計(jì)文檔條數(shù)
Model.count()
personModel.count({}, (err,count)=>{ if(!err){ console.log("查詢(xún)條數(shù)成功! 一共:" + count + "條"); }else{ throw err; } })Entity
Entity—— 由Model創(chuàng)建的實(shí)體,使用save方法保存數(shù)據(jù),Model和Entity的操作都能影響數(shù)據(jù)庫(kù)的操作,但Model比Entity更具操作性。
使用Model創(chuàng)建Entity,如下示例:
let mongoose= require("mongoose"); let db= mongoose.connection("mongodb://localhost/m_data"); db.on("open", ()=>{ console.log("連接成功!") }) let Schema= mongoose.Schema; let personSchema= new Schema({ name: String, sex: String, age: Number }); let personModel= mongoose.model("person", personSchema); let personEntity = new personModel({ name: "許巍", sex: "男", age: 38 }) personEntity.save((err, person)=>{ if(!err){ console.log("保存成功!") console.log(person); }else{ console.log("保存失??!") } })
參考:https://blog.csdn.net/swimmin...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/19435.html
摘要:通過(guò)構(gòu)造而成,除了具有定義的數(shù)據(jù)庫(kù)骨架以外,還可以具體的操作數(shù)據(jù)庫(kù)。通過(guò)創(chuàng)建的實(shí)體,它也可以操作數(shù)據(jù)庫(kù)。但比更具操作性。 原文鏈接:Mongoose 前言 學(xué)數(shù)據(jù)庫(kù)肯定需要知道怎么連接后臺(tái)Mongoose 是用來(lái)方便連接 MongoDB 與 node 的一個(gè)工具包是時(shí)候?qū)W習(xí)一波 nodejs連接MongoDB 連接數(shù)據(jù)庫(kù)前需要先打開(kāi)數(shù)據(jù)庫(kù) MongoDB yarn add mongoo...
摘要:項(xiàng)目地址寫(xiě)在開(kāi)頭本文主要分享我如何使用對(duì)實(shí)現(xiàn)增刪改查操作,感謝社區(qū)所有精品文章的幫助,以及的開(kāi)源項(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... 寫(xiě)在開(kāi)頭 本文主要分享我如何使用express+mongoose對(duì)mongodb實(shí)現(xiàn)增刪改查...
最近學(xué)習(xí)用nodejs做博客系統(tǒng),用了express框架。數(shù)據(jù)庫(kù)采用mongodb,具體用mongoose實(shí)現(xiàn),下面是mongoose的初步了解1、首先要安裝mongoose npm install mongoose2、 //db.js const mongoose=require(mongoose);//在文件中引用 const Schema=mongoose.Schema;//schema定義...
最近學(xué)習(xí)用nodejs做博客系統(tǒng),用了express框架。數(shù)據(jù)庫(kù)采用mongodb,具體用mongoose實(shí)現(xiàn),下面是mongoose的初步了解1、首先要安裝mongoose npm install mongoose2、 //db.js const mongoose=require(mongoose);//在文件中引用 const Schema=mongoose.Schema;//schema定義...
閱讀 3758·2021-08-11 11:16
閱讀 1629·2019-08-30 15:44
閱讀 1999·2019-08-29 18:45
閱讀 2279·2019-08-26 18:18
閱讀 1010·2019-08-26 13:37
閱讀 1576·2019-08-26 11:43
閱讀 2125·2019-08-26 11:34
閱讀 380·2019-08-26 10:59