mongoose 的使用

前期安裝/設置

// 安裝

npm install mongoose

//設置

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()

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

// 設置普通索引
db.shops.createIndex({title:1})
// 設置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)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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