前期安裝/設(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ù)庫所在位置)