摘要:根據(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)建ModelModel代表的是數(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è)Documentvar 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
摘要:項(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)增刪改查...
摘要:作為一個(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...
摘要:使用操作的測(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ù)是...
摘要:前言上篇初階系列二中的增刪改查中講解了用驅(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更順暢的操...
閱讀 3031·2021-11-22 12:06
閱讀 612·2021-09-03 10:29
閱讀 6575·2021-09-02 09:52
閱讀 2027·2019-08-30 15:52
閱讀 3423·2019-08-29 16:39
閱讀 1198·2019-08-29 15:35
閱讀 2072·2019-08-29 15:17
閱讀 1433·2019-08-29 11:17