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