mongoose 的使用

前期安裝/設(shè)置

// 安裝

npm install mongoose

//設(shè)置

var mongoose = require('mongoose');
mongoose.Promise=global.Promise
mongoose.connect('mongodb://localhost/test');
var db = mongoose.connection;
db.on('error',(err)=>{});
db.once('open', ()=>{
  .......
});

使用

//創(chuàng)建表模板

  var User=mongoose.model("User",{name:String,age:Number,..........})

//插入數(shù)據(jù)

User.create(Object,()=>{......})

//查詢

User.find(Object,(err,data)=>{......})
//或
User.findOne(Object,(err,data)=>{......})

//更新數(shù)據(jù)

User.update(Object,()=>{......})

//刪除數(shù)據(jù)

User.remove(Obeject,()=>{......})

// 下面的路徑是自定義的

數(shù)據(jù)備份:mongodump -d dbname -o c:/data(備份數(shù)據(jù)存放位置)
數(shù)據(jù)恢復:mongorestore -d dbname c:/data(備份數(shù)據(jù)庫所在位置)
// *添加數(shù)據(jù)
db.users.insert({username:"zhagnsan"})

// 將所有字段信息直接修改為{username:"lisi"},比較危險疗隶,不推薦使用
db.users.update({username:"zhangsan"},{username:"lisi"}):直接修改

// *只修改username屬性
db.users.update({username:"zhangsan"},{$set:{username:"lisi"}}):

// *給年齡增加1
db.users.update({username:"zhangsan"},{$inc:{age:1}})

// *刪除指定的字段值
db.users.update({username:"zhangsan"},{$unset:{sex:1}})

// $push $pushAll不管原來數(shù)組中有沒有重復數(shù)據(jù)坚冀,都會添加進去
// 向文檔中的likes字段(數(shù)組類型)添加一個值
db.users.update({username:"zhangsan"},{$push:{likes:"打牌"}})

// 向文檔中的likes字段(數(shù)組類型)添加多個值
db.users.update({username:"zhangsan"},{$pushAll:{likes:['跳鋼管舞','LOL']}})

// $addToSet
// 向文檔中的likes字段(數(shù)組類型)添加多個值
db.users.update({username:"zhangsan"},{$addToSet:{likes:{$each:['CS','紅警','超級瑪麗']}
}})
// LOL和超級瑪麗重復,通過$addToSet添加的數(shù)據(jù)就不會再次寫入到likes中
db.users.update({username:"zhangsan"},{$addToSet:{likes:{$each:['LOL','三目和尚','超級瑪
麗']}}})

// 刪除likes字段中的最后一個值
db.users.update({username:"zhangsan"},{$pop:{likes:1}})
// 刪除lieks字段中的第一個值
db.users.update({username:"zhangsan"},{$pop:{likes:-1}})

// 刪除likes中的LOL
db.users.update({username:"zhangsan"},{$pull:{likes:"LOL"}})
// 刪除likes中的CS和打牌兩個元素
db.users.update({username:"zhangsan"},{$pullAll:{likes:['CS','打牌']}})

// upsert:true:存在該數(shù)據(jù)則修改癞尚,不存在則添加
db.users.update({username:"wangwu"},{$set:{username:"zhaoliu",age:20,sex:"男"}},{upsert:
true})

// * multi:true:將所有符合條件的數(shù)據(jù)全部進行修改(如果為false,默認只修改一條符合條件的數(shù)據(jù))
db.users.update({age:21},{$set:{age:22}},{multi:true});

// save(document)document文檔中如果有_id參數(shù)洲守,則修改數(shù)據(jù)洛心,如果沒有則添加數(shù)據(jù)
db.users.save({_id:ObjectId("584a646b506d4c4e202767b9"),username:"two",age:33})

刪除 *
// remove({username:"two"}): 刪除username為two的數(shù)據(jù)
db.users.remove({username:"two"})

// remove({}):刪除所有的數(shù)據(jù)
db.users.remove({})

// drop():連通集合一并刪除
db.users.drop():

// *==========================
// 根據(jù)條件搜索數(shù)據(jù)
db.shops.find({price:3199}):搜索價格3199的商品
db.shops.find({price:{$lt:3199}}):搜索價格小于3199的商品
db.shops.find({price:{$lte:3199}}): lte:小于等于
db.shops.find({price:{$gt:3199}}):gt:大于
db.shops.find({price:{$gte:3199}}):gte:大于等于
db.shops.find({price:{$ne:3199}}) ne:不等于

// 區(qū)間判斷
db.shops.find({price:{$lt:5000,$gt:3000}}):大于3000小于5000的價格的商品

// and判斷 &&
db.shops.find({title:"戴爾電腦",price:{$gt:2000}}):必須是戴爾電腦而且價格大于2000

// or判斷 ||
db.shops.find({$or:[{price:{$lt:2000}},{price:{$gt:8000}}]})
db.shops.find({$or:[]})
db.shops.find({$or:[{},{}]})
db.shops.find({$or:[{price:{$lt:2000}},{}]})
db.shops.find({$or:[{price:{$lt:2000}},{price:{$gt:8000}}]})

// $in:固定值查找
db.shops.find({title:{$in:['戴爾電腦','mac電腦']}}) 必須是戴爾電腦或者mac電腦

// 模糊匹配
db.shops.find({title:/電腦/}) 將title名稱中包含電腦的查詢出來

// 只獲取兩條數(shù)據(jù)(第一頁數(shù)據(jù))
db.shops.find().limit(2)
// 跳過兩條數(shù)據(jù),再拿兩條數(shù)據(jù)(第二頁數(shù)據(jù))
db.shops.find().limit(2).skip(2)

// 將商品按照price的倒序排序
db.shops.find().sort({price:-1})
// 將商品按照price的升序排序
db.shops.find().sort({price:1})

// 當前shops集合中數(shù)據(jù)總條數(shù)

db.shops.find().count()

// 給字段添加索引值眷射,提升查詢效率

// 設(shè)置普通索引
db.shops.createIndex({title:1})
// 設(shè)置title為唯一索引(如果重復,報錯 'duplicate key error index')
db.shops.createIndex({title:1},{unique:true})
// 刪除索引
db.shops.dropIndex({title:1})
// 刪除所有的索引(除_id)
db.shops.dropIndexes();

// * 聚合
// 計算每個品牌的總數(shù)量
db.shops.aggregate([{$group:{_id:"$title",total:{$sum:1}}}])
// 計算每個品牌的總價格
db.shops.aggregate([{$group:{_id:"$title",total:{$sum:"$price"}}}])
// 計算每個品牌的平均價格
db.shops.aggregate([{$group:{_id:"$title",pingjun:{$avg:"$price"}}}])
// 計算每個品牌的最大價格
db.shops.aggregate([{$group:{_id:"$title",max:{$max:"$price"}}}])
// 計算每個品牌的最小價格
db.shops.aggregate([{$group:{_id:"$title",min:{$min:"$price"}}}])

// 下面的路徑是自定義的
數(shù)據(jù)備份:mongodump -d dbname -o c:/data(備份數(shù)據(jù)存放位置)
數(shù)據(jù)恢復:mongorestore -d dbname c:/data(備份數(shù)據(jù)庫所在位置)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市妖碉,隨后出現(xiàn)的幾起案子涌庭,更是在濱河造成了極大的恐慌,老刑警劉巖嗅绸,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脾猛,死亡現(xiàn)場離奇詭異,居然都是意外死亡鱼鸠,警方通過查閱死者的電腦和手機猛拴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蚀狰,“玉大人愉昆,你說我怎么就攤上這事÷樘#” “怎么了跛溉?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扮授。 經(jīng)常有香客問我芳室,道長,這世上最難降的妖魔是什么刹勃? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任堪侯,我火速辦了婚禮,結(jié)果婚禮上荔仁,老公的妹妹穿的比我還像新娘伍宦。我一直安慰自己,他們只是感情好乏梁,可當我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布次洼。 她就那樣靜靜地躺著,像睡著了一般遇骑。 火紅的嫁衣襯著肌膚如雪卖毁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天落萎,我揣著相機與錄音势篡,去河邊找鬼。 笑死模暗,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的念祭。 我是一名探鬼主播兑宇,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼粱坤!你這毒婦竟也來了隶糕?” 一聲冷哼從身側(cè)響起瓷产,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎枚驻,沒想到半個月后濒旦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡再登,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年尔邓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锉矢。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡梯嗽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出沽损,到底是詐尸還是另有隱情灯节,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布绵估,位于F島的核電站炎疆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏国裳。R本人自食惡果不足惜形入,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望躏救。 院中可真熱鬧唯笙,春花似錦、人聲如沸盒使。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽少办。三九已至苞慢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間英妓,已是汗流浹背挽放。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蔓纠,地道東北人辑畦。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像腿倚,于是被迫代替她去往敵國和親纯出。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)暂筝,斷路器箩言,智...
    卡卡羅2017閱讀 134,658評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,160評論 25 707
  • 有的人不一定在身邊陨收,卻禁不住想念。也許在身邊的鸵赖,卻不一定敢去擁有务漩,也只是遠遠的望著。擁有的也許是你的幸福卫漫,...
    星辰遠方閱讀 272評論 0 0
  • 從出生到上個月20年零9個月,我生活在一個并不是很富裕家庭包吝。在家的時候一般都是衣來伸手飯來張口饼煞,小時候有媽...
    融_7b68閱讀 184評論 0 0