摘要:根據個人編碼習慣,僅供參考如中途看的有點蒙圈,可以轉到官網查看引入模塊連接數據庫鏈接狀態數據庫鏈接成功為了查看是否鏈接成功所以做一個回調創建模式對象例將賦值給變量創建對象官網創建通過來創建代表的是數據庫中的集合,通過才能對數據庫進行操作可在
根據個人編碼習慣,僅供參考
如中途看的有點蒙圈,可以轉到官網查看
引入模塊var mongoose = require("mongoose");連接數據庫
mongoose.connect("mongodb://localhost/mongoose_test");鏈接狀態
mongoose.connection.once("open",function () { console.log("數據庫鏈接成功"); });
為了查看是否鏈接成功所以做一個回調
創建Schema(模式)對象例:
var Schema = mongoose.Schema; //將mongoose.Schema 賦值給變量 //創建Schema對象 var stuSchema = new Schema({ name:String, age:Number, gender:{ type:String, default:"female" }, address:String });
官網:
創建Model 通過Schema來創建ModelModel代表的是數據庫中的集合 ,通過Model 才能對數據庫進行操作,可在官網查看
語法:
mongoose.model(modelName, schema); 參數:modelName:要映射的集合名 特點:mongoose:會自動將集合名變成復數
例:
var StuModel = mongoose.model("student", stuSchema);增加(向數據庫插入文檔)
語法:
Model.create(doc(s),[callback]);//用來創建一個文檔并添加到數據庫中
參數:
dec(s) 可以是一個文檔對象也是可以是一個文檔對象的數組
[callback] 可選的 回調函數
例:
StuModel.create({ name:"白骨精", age:16, address:"白骨洞" },function (err) { if(!err){ console.log("插入成功"); } });查詢
語法:
Model.find(conditions,[projection],[options],[callback]);//查詢所有符合條件的文檔 總會返回一個數組 Model.findById(id,[projection],[options],[callback]);//根據文檔的id屬性查詢文檔 Model.findOne([conditions],[projection],[options],[callback]);//查詢符合條件的第一個文檔 總是返回一個具體的文檔對象
參數:
conditions 查詢條件
projection 投影(需要獲取到的字段)
第一種方式 {name:1,_id:0}
第二種方式 "name -_id"
options 查詢的選項(skip limit)
callback 回調函數 查詢結果通過回調函數返回 回調函數必傳 如果不傳回調函數 壓根就不會查詢
例:
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()查詢的結果 返回的對象就是 Document 文檔對象 //Document 對象是Model的實例 console.log(doc instanceof StuModel) } });修改
語法:
Model.update(conditions,doc,[options],[callback]);//用來修改一個或者多個文檔 Model.updateMany(conditions,doc,[options],[callback]);//用來修改多個文檔 Model.updateOne(conditions,doc,[options],[callback]);//用來修改一個文檔 Model.replaceOne(conditions,doc,[options],[callback]);//替換一個
參數:
conditions 查詢條件
doc 修改后的對象
options 配置參數
callback 回調函數
刪除語法:
Model.remove(conditions,[callback]);//刪除一個或者多個 Model.deleteOne(conditions,[callback]);//刪除一個 Model.deleteMany(conditions,[callback]);//刪除多個
例:
StuModel.remove({name:"白骨精"},function (err) { if(!err){ console.log("刪除成功"); } })統計文檔數量
語法:
Model.count(conditions,[callback])
例:
StuModel.count({},function (err,count) { if(!err){ console.log(count); } });Document方法
Document 和 集合中的文檔一一對應 Document 是Model 的實例,通過Model查詢到結果都是Document
創建一個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) * - 設置文檔的指定屬性值 * id * - 獲取文檔的_id屬性值 * toJSON() * - 轉換為一個json對象 * toObject() * - 將Document 對象轉換為一個普通的js對象,注意所有的Document對象的方法或屬性都不能使用了 */ //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) } });模塊化
新建一個js文件,用來連接數據庫 /** *定義一個模塊,用來連接mongodb數據庫 */ var mongoose = require("mongoose"); mongoose.connect("mongodb://localhost/mongoose_test"); mongoose.connection.once("open",function () { console.log("數據庫鏈接成功"); }); ------------------------------------------------------------------- 在新建一個js文件,用來創建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; ---------------------------------------------------------------- 在需要調用的地方引入就可以了 /** *定義一個模塊,用來連接mongodb數據庫 */ var mongoose = require("mongoose"); mongoose.connect("mongodb://localhost/mongoose_test"); mongoose.connection.once("open",function () { console.log("數據庫鏈接成功"); });
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/19319.html
摘要:項目地址寫在開頭本文主要分享我如何使用對實現增刪改查操作,感謝社區所有精品文章的幫助,以及的開源項目對我的啟發。我們這個項目是建立一個班級學生管理系統,能夠對學生的姓名及學號進行增刪改查的操作。 項目地址:https://github.com/jrainlau/mongoose_cru... 寫在開頭 本文主要分享我如何使用express+mongoose對mongodb實現增刪改查...
摘要:作為一個有志向的前端,怎么能不搞搞全棧呢。。。地址歡迎大家多多交流前端技術啊,如果大家喜歡的話,請給我一個小小的哦 作為一個有志向的前端,怎么能不搞搞全(zhuang)棧(bi)呢。。。說搞咱就搞啊,后端就用node,數據庫就用mongodb,前端呢,呃,再搞個node的web框架express,思路搞定,開始搭建我們的環境,搭建之前還是先看看我們的目標和成果 項目的目標和成果 sh...
摘要:使用操作的測試文件連接數據庫引入連接指定的數據庫只有數據庫是變化的獲取連接對象綁定連接完成的監聽用來提示連接成功得到對應特定集合的字義描述文檔結構定義與集合對應,可以操作集合通過或其實例對集合數據進行操作通過實例的添加數據通過的查詢多個或一 使用 mongoose 操作 mongodb 的測試文件 連接數據庫1.1 引入 mongoose1.2 連接指定的數據庫(URL 只有數據庫是...
摘要:前言上篇初階系列二中的增刪改查中講解了用驅動來對數據進行增刪改查,本篇將繼續前進,依舊通過增刪改查來講解如何用更順暢的操控。查下面這段代碼對集合進行搜索,并輸出每項任務的唯一和描述,等打印完成后,關閉數據庫連接。 前言 上篇 mongoDB初階系列二:node中的增刪改查 中講解了用node驅動來對數據進行增刪改查,本篇將繼續前進,依舊通過增刪改查來講解如何用mongoose更順暢的操...
閱讀 3012·2021-11-22 12:06
閱讀 599·2021-09-03 10:29
閱讀 6526·2021-09-02 09:52
閱讀 2013·2019-08-30 15:52
閱讀 3411·2019-08-29 16:39
閱讀 1191·2019-08-29 15:35
閱讀 2061·2019-08-29 15:17
閱讀 1416·2019-08-29 11:17