摘要:根據(jù)個(gè)人編碼習(xí)慣,僅供參考如中途看的有點(diǎn)蒙圈,可以轉(zhuǎn)到官網(wǎng)查看引入模塊連接數(shù)據(jù)庫鏈接狀態(tài)數(shù)據(jù)庫鏈接成功為了查看是否鏈接成功所以做一個(gè)回調(diào)創(chuàng)建模式對象例將賦值給變量創(chuàng)建對象官網(wǎng)創(chuàng)建通過來創(chuàng)建代表的是數(shù)據(jù)庫中的集合,通過才能對數(shù)據(jù)庫進(jìn)行操作可在
根據(jù)個(gè)人編碼習(xí)慣,僅供參考
如中途看的有點(diǎn)蒙圈,可以轉(zhuǎn)到官網(wǎng)查看
引入模塊var mongoose = require("mongoose");連接數(shù)據(jù)庫
mongoose.connect("mongodb://localhost/mongoose_test");鏈接狀態(tài)
mongoose.connection.once("open",function () { console.log("數(shù)據(jù)庫鏈接成功"); });
為了查看是否鏈接成功所以做一個(gè)回調(diào)
創(chuàng)建Schema(模式)對象例:
var Schema = mongoose.Schema; //將mongoose.Schema 賦值給變量 //創(chuàng)建Schema對象 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ù)庫中的集合 ,通過Model 才能對數(shù)據(jù)庫進(jìn)行操作,可在官網(wǎng)查看
語法:
mongoose.model(modelName, schema); 參數(shù):modelName:要映射的集合名 特點(diǎn):mongoose:會自動將集合名變成復(fù)數(shù)
例:
var StuModel = mongoose.model("student", stuSchema);增加(向數(shù)據(jù)庫插入文檔)
語法:
Model.create(doc(s),[callback]);//用來創(chuàng)建一個(gè)文檔并添加到數(shù)據(jù)庫中
參數(shù):
dec(s) 可以是一個(gè)文檔對象也是可以是一個(gè)文檔對象的數(shù)組
[callback] 可選的 回調(diào)函數(shù)
例:
StuModel.create({ name:"白骨精", age:16, address:"白骨洞" },function (err) { if(!err){ console.log("插入成功"); } });查詢
語法:
Model.find(conditions,[projection],[options],[callback]);//查詢所有符合條件的文檔 總會返回一個(gè)數(shù)組 Model.findById(id,[projection],[options],[callback]);//根據(jù)文檔的id屬性查詢文檔 Model.findOne([conditions],[projection],[options],[callback]);//查詢符合條件的第一個(gè)文檔 總是返回一個(gè)具體的文檔對象
參數(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ù) 壓根就不會查詢
例:
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é)果 返回的對象就是 Document 文檔對象 //Document 對象是Model的實(shí)例 console.log(doc instanceof StuModel) } });修改
語法:
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 修改后的對象
options 配置參數(shù)
callback 回調(diào)函數(shù)
刪除語法:
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ù)量
語法:
Model.count(conditions,[callback])
例:
StuModel.count({},function (err,count) { if(!err){ console.log(count); } });Document方法
Document 和 集合中的文檔一一對應(yīng) Document 是Model 的實(shí)例,通過Model查詢到結(jié)果都是Document
創(chuàng)建一個(gè)Documentvar stu = new StuModel({ name:"蘇小小", age:22, gender:"male", address:"上海" });Document 的方法
語法:
Model#save([options],[fn]);
例:
stu.save(function (err) { if(!err){ console.log("保存成功") } });修改,刪除
語法:
修改對象: update(update,[options],[callback]); 刪除對象: remove([callback]);
例:
StuModel.findOne({},function (err,doc) { if(!err){ /** * update(update,[options],[callback]) * - 修改對象 * remove([callback]) * - 刪除對象 */ // 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對象 * toObject() * - 將Document 對象轉(zhuǎn)換為一個(gè)普通的js對象,注意所有的Document對象的方法或?qū)傩远疾荒苁褂昧? */ //console.log(doc.get("name")) /** * 或 */ // console.log(doc.name) //doc.set("name","豬無能"); /** * 或 */ // 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ù)庫 /** *定義一個(gè)模塊,用來連接mongodb數(shù)據(jù)庫 */ var mongoose = require("mongoose"); mongoose.connect("mongodb://localhost/mongoose_test"); mongoose.connection.once("open",function () { console.log("數(shù)據(jù)庫鏈接成功"); }); ------------------------------------------------------------------- 在新建一個(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ù)庫 */ var mongoose = require("mongoose"); mongoose.connect("mongodb://localhost/mongoose_test"); mongoose.connection.once("open",function () { console.log("數(shù)據(jù)庫鏈接成功"); });
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/19319.html
摘要:項(xiàng)目地址寫在開頭本文主要分享我如何使用對實(shí)現(xiàn)增刪改查操作,感謝社區(qū)所有精品文章的幫助,以及的開源項(xiàng)目對我的啟發(fā)。我們這個(gè)項(xiàng)目是建立一個(gè)班級學(xué)生管理系統(tǒng),能夠?qū)W(xué)生的姓名及學(xué)號進(jìn)行增刪改查的操作。 項(xiàng)目地址:https://github.com/jrainlau/mongoose_cru... 寫在開頭 本文主要分享我如何使用express+mongoose對mongodb實(shí)現(xiàn)增刪改查...
摘要:作為一個(gè)有志向的前端,怎么能不搞搞全棧呢。。。地址歡迎大家多多交流前端技術(shù)啊,如果大家喜歡的話,請給我一個(gè)小小的哦 作為一個(gè)有志向的前端,怎么能不搞搞全(zhuang)棧(bi)呢。。。說搞咱就搞啊,后端就用node,數(shù)據(jù)庫就用mongodb,前端呢,呃,再搞個(gè)node的web框架express,思路搞定,開始搭建我們的環(huán)境,搭建之前還是先看看我們的目標(biāo)和成果 項(xiàng)目的目標(biāo)和成果 sh...
摘要:使用操作的測試文件連接數(shù)據(jù)庫引入連接指定的數(shù)據(jù)庫只有數(shù)據(jù)庫是變化的獲取連接對象綁定連接完成的監(jiān)聽用來提示連接成功得到對應(yīng)特定集合的字義描述文檔結(jié)構(gòu)定義與集合對應(yīng),可以操作集合通過或其實(shí)例對集合數(shù)據(jù)進(jìn)行操作通過實(shí)例的添加數(shù)據(jù)通過的查詢多個(gè)或一 使用 mongoose 操作 mongodb 的測試文件 連接數(shù)據(jù)庫1.1 引入 mongoose1.2 連接指定的數(shù)據(jù)庫(URL 只有數(shù)據(jù)庫是...
摘要:前言上篇初階系列二中的增刪改查中講解了用驅(qū)動來對數(shù)據(jù)進(jìn)行增刪改查,本篇將繼續(xù)前進(jìn),依舊通過增刪改查來講解如何用更順暢的操控。查下面這段代碼對集合進(jìn)行搜索,并輸出每項(xiàng)任務(wù)的唯一和描述,等打印完成后,關(guān)閉數(shù)據(jù)庫連接。 前言 上篇 mongoDB初階系列二:node中的增刪改查 中講解了用node驅(qū)動來對數(shù)據(jù)進(jìn)行增刪改查,本篇將繼續(xù)前進(jìn),依舊通過增刪改查來講解如何用mongoose更順暢的操...
閱讀 3105·2021-11-22 12:06
閱讀 729·2021-09-03 10:29
閱讀 6757·2021-09-02 09:52
閱讀 2078·2019-08-30 15:52
閱讀 3488·2019-08-29 16:39
閱讀 1262·2019-08-29 15:35
閱讀 2159·2019-08-29 15:17
閱讀 1483·2019-08-29 11:17