mongodb
增刪改查
增:
db.createCollection("name", {options:number}):顯式地創(chuàng)建集合
db.addUser("userName", "pwd123", true):添加用戶、設(shè)置密碼、是否只讀
db.users.save({name: ‘zhangsan', age: 25, sex: true}):添加數(shù)據(jù)集合
刪:
db.dropDatabase():刪除當(dāng)前使用的數(shù)據(jù)庫(kù)
db.removeUser("name"):刪除用戶
db.users.remove({age: 132}):刪除集合數(shù)據(jù)
查:
show dbs:查詢所有數(shù)據(jù)庫(kù)
db或db.getName():查詢當(dāng)前使用的數(shù)據(jù)庫(kù)
db.stats():顯示當(dāng)前db的狀態(tài)
db.version():顯示當(dāng)前版本
db.getMongo():查看當(dāng)前db的鏈接機(jī)器地址
db.name.isCapped():判斷name集合是否為定容量
db.printCollectionStats():顯示當(dāng)前db的所有聚集集合
db.auth("userName", "123123"):數(shù)據(jù)庫(kù)認(rèn)證(安全模式)
show users:顯示當(dāng)前所有用戶
db.userInfo.find():查詢所有記錄,相當(dāng)于:select* from userInfo
db.userInfo.distinct("name"):會(huì)過(guò)濾掉name中的相同數(shù)據(jù),相當(dāng)于:select distict name from userInfo
db.userInfo.find({"age": 22}):查詢age=22的記錄
相當(dāng)于: select * from userInfo where age = 22
db.userInfo.find({age: {$gt: 22}}):查詢age > 22的記錄
相當(dāng)于:select * from userInfo where age >22;
同理:gt:> gte:>= lt:< lte:<=
db.userInfo.find({age: {$gte: 23, $lte: 26}}):查詢age >= 23 并且 age <= 26
db.userInfo.find({name: /mongo/}):查詢name中包含 mongo的數(shù)據(jù)
db.userInfo.find({name: /^mongo/}):查詢name中以mongo開頭的
db.userInfo.find({}, {name: 1, age: 1}):查詢指定列name、age數(shù)據(jù)
db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1}):、查詢指定列name、age數(shù)據(jù) 和 age > 25 的數(shù)據(jù)
db.userInfo.find().sort({age: 1}):按鍵值(age)升序,-1為降序
db.userInfo.find({name: 'zhangsan', age: 22}):查詢name = zhangsan, age = 22的數(shù)據(jù)
db.userInfo.find().limit(5):查詢前5條數(shù)據(jù)
db.userInfo.find().skip(10):查詢10條以后的數(shù)據(jù)
db.userInfo.find().limit(10).skip(5):查詢?cè)?-10之間的數(shù)據(jù)
db.userInfo.find({$or: [{age: 22}, {age: 25}]}):查找age = 22或age = 25;
db.userInfo.findOne()或db.userInfo.find().limit(1):查詢第一條數(shù)據(jù)
db.userInfo.find({age: {$gte: 25}}).count():查詢某個(gè)結(jié)果集的記錄條數(shù)
db.userInfo.find({sex: {$exists: true}}).count():按照某列進(jìn)行排序
改:
use name :切換/創(chuàng)建 數(shù)據(jù)庫(kù)
,當(dāng)創(chuàng)建一個(gè)集合(table)的時(shí)候會(huì)自動(dòng)創(chuàng)建當(dāng)前數(shù)據(jù)庫(kù)
db.getCollectionNames():得到當(dāng)前db的所有聚集集合
db.getCollection("name"):得到指定名稱的集合
db.users.update({age: 25}, {$set: {name: 'changeName'}}, false, true):update users set name = ‘changeName' where age = 25;
db.users.update({name: 'Lisi'}, {$inc: {age: 50}}, false, true):update users set age = age + 50 where name = ‘Lisi';
db.users.update({name: 'Lisi'}, {$inc: {age: 50}, $set: {name: 'hoho'}}, false, true):update users set age = age + 50, name = ‘hoho' where name = ‘Lisi';
其它操作
錯(cuò)誤:
查詢之前的錯(cuò)誤信息:
db.getPrevError();
清除錯(cuò)誤記錄:
db.resetError();
幫助:
help db.help()
db.yourColl.help()
db.youColl.find().help()
rs.help()
克?。?/h3>
db.cloneDatabase(“127.0.0.1”):將指定機(jī)器上的數(shù)據(jù)庫(kù)的數(shù)據(jù)克隆到當(dāng)前數(shù)據(jù)庫(kù)
db.copyDatabase("mydb", "temp", "127.0.0.1"):將本機(jī)的mydb的數(shù)據(jù)復(fù)制到temp數(shù)據(jù)庫(kù)中
修復(fù):
db.repairDatabase(): 修復(fù)當(dāng)前數(shù)據(jù)庫(kù)
索引:
創(chuàng)建索引:
db.userInfo.ensureIndex({name: 1});
db.userInfo.ensureIndex({name: 1, ts: -1});
查詢當(dāng)前聚集集合所有索引:
db.userInfo.getIndexes();
查看總索引記錄大小:
db.userInfo.totalIndexSize();
讀取當(dāng)前集合的所有index信息:
db.users.reIndex();
刪除指定索引:
db.users.dropIndex("name_1");
刪除所有索引索引:
db.users.dropIndexes();
查詢修改刪除:
db.users.findAndModify({
query: {age: {$gte: 25}},
sort: {age: -1},
update: {$set: {name: 'a2'}, $inc: {age: 2}},
remove: true
});
db.runCommand({ findandmodify : "users",
query: {age: {$gte: 25}},
sort: {age: -1},
update: {$set: {name: 'a2'}, $inc: {age: 2}},
remove: true
});
update 或 remove 其中一個(gè)是必須的參數(shù); 其他參數(shù)可選。
| 參數(shù) | 詳解 | 默認(rèn)值 |
|---|---|---|
| query | 查詢過(guò)濾條件 | {} |
| sort | 如果多個(gè)文檔符合查詢過(guò)濾條件,將以該參數(shù)指定的排列方式選擇出排在首位的對(duì)象,該對(duì)象將被操作 | {} |
| remove | 若為true,被選中對(duì)象將在返回前被刪除 | N/A |
| update | 一個(gè) 修改器對(duì)象 | N/A |
| new | 若為true,將返回修改后的對(duì)象而不是原始對(duì)象。在刪除操作中,該參數(shù)被忽略。 | false |
| upsert | 創(chuàng)建新對(duì)象若查詢結(jié)果為空。 示例 (1.5.4+) | false |
| fields | 參見(jiàn)Retrieving a Subset of Fields (1.5.0+) | All fields |
注:函數(shù)不加括號(hào),貌似輸出源碼
express web
Request 對(duì)象 - request 對(duì)象表示 HTTP 請(qǐng)求,包含了請(qǐng)求查詢字符串,參數(shù),內(nèi)容,HTTP 頭部等屬性。常見(jiàn)屬性有:
req.app:當(dāng)callback為外部文件時(shí),用req.app訪問(wèn)express的實(shí)例
req.baseUrl:獲取路由當(dāng)前安裝的URL路徑
req.body / req.cookies:獲得「請(qǐng)求主體」/ Cookies
req.fresh / req.stale:判斷請(qǐng)求是否還「新鮮」
req.hostname / req.ip:獲取主機(jī)名和IP地址
req.originalUrl:獲取原始請(qǐng)求URL
req.params:獲取路由的parameters
req.path:獲取請(qǐng)求路徑
req.protocol:獲取協(xié)議類型
req.query:獲取URL的查詢參數(shù)串
req.route:獲取當(dāng)前匹配的路由
req.subdomains:獲取子域名
req.accpets():檢查請(qǐng)求的Accept頭的請(qǐng)求類型
req.acceptsCharsets / req.acceptsEncodings /
req.acceptsLanguages
req.get():獲取指定的HTTP請(qǐng)求頭
req.is():判斷請(qǐng)求頭Content-Type的MIME類型
Response 對(duì)象 - response 對(duì)象表示 HTTP 響應(yīng),即在接收到請(qǐng)求時(shí)向客戶端發(fā)送的 HTTP 響應(yīng)數(shù)據(jù)。常見(jiàn)屬性有:
res.app:同req.app一樣
res.append():追加指定HTTP頭
res.set()在res.append()后將重置之前設(shè)置的頭
res.cookie(name,value [,option]):設(shè)置Cookie
opition: domain / expires / httpOnly / maxAge / path / secure / signed
res.clearCookie():清除Cookie
res.download():傳送指定路徑的文件
res.get():返回指定的HTTP頭
res.json():傳送JSON響應(yīng)
res.jsonp():傳送JSONP響應(yīng)
res.location():只設(shè)置響應(yīng)的Location HTTP頭,不設(shè)置狀態(tài)碼或者close response
res.redirect():設(shè)置響應(yīng)的Location HTTP頭,并且設(shè)置狀態(tài)碼302
res.send():傳送HTTP響應(yīng)
res.sendFile(path [,options] [,fn]):傳送指定路徑的文件 -會(huì)自動(dòng)根據(jù)文件extension設(shè)定Content-Type
res.set():設(shè)置HTTP頭,傳入object可以一次設(shè)置多個(gè)頭
res.status():設(shè)置HTTP狀態(tài)碼
res.type():設(shè)置Content-Type的MIME類型