顯示當前數據庫服務器上的數據庫show dbs
html
切換到指定數據庫的上下文,能夠在此上下文中管理testdb數據庫以及其中的集合等use testdb
正則表達式
顯示數據庫中全部的集合(collection)show collections
數據庫
查看數據庫服務器的狀態db.serverStatus()
服務器
查詢指定數據庫統計信息use fragment
app
db.stats()
dom
建立數據庫。
直接經過use dbname來切換到這個數據庫上下文下面,系統會自動延遲建立該數據庫。函數
use testdb show dbs (此刻可能testdb數據庫並無被建立) db (顯示當前使用的數據庫,結果位testdb) db.storeCollection.save({'version':'3.5', 'segment':'e3ol6'}) (插入一條數據) show dbs (此刻能看到testdb被建立)
刪除數據庫。
直接使用db.dropDatabase()便可刪除數據庫。this
建立集合。.net
db.createCollection('replicationColletion', {'capped':true, 'size':10240, 'max':17855200}) show collections
刪除集合。code
db.mycoll.drop()
增長紀錄。
兩種插入方法
db.storeCollection.save({'version':'3.5', 'segment':'e3ol6'})
db.storeCollection.insert({'version':'3.5', 'segment':'e3ol6'})
若新增的數據中存在主鍵 ,insert() 會提示錯誤,而save() 則更改原來的內容爲新內容。
如:
已存在數據: {_id : 1, " name " : " n1 " },再次進行插入操做時,
insert({_id : 1, " name " : " n2 " }) 會報主鍵重複的錯誤提示
save({ _id : 1, " name " : " n2 " }) 會把 n1 修改成 n2 。
相同點:
若新增的數據中沒有主鍵時,會增長一條記錄。
已存在數據: { _id : 1, " name " : " n1 " },再次進行插入操做時,insert({ " name " : " n2 " })
插入的數據由於沒有主鍵,因此會增長一條數據save({ " name " : " n2 " })
增長一條數據。
循環插入
for(var i = 1; i < 100; i++) {
db.testCollection.insert({ age : i % 7, name : 'name' + Math.round((10 + 20 * Math.random())), password : '123456' })
}
更新記錄。
db.testCollection.update({age: 6}, {$inc: {age: 1}}) //選擇age爲6的一條記錄,使他的age加1. db.testCollection.update({age: 7}, {$set: {password : '456789'}}) //選擇age爲7的一條記錄,設置password爲456789 //若是條件不匹配一個記錄,但願能往數據庫裏新增一個,設置update函數第三個參數爲true就能夠。這裏age爲8條件匹配不到數據。 db.testCollection.update({age: 8}, {$set: {password : '888888'}}, true) //若要批量更新,設置update函數第四個參數爲true就能夠了。 db.testCollection.update({age: 7}, {$set: {password : '456789'}}, true, true)
更新version爲3.5的記錄的segment值。
查詢一條紀錄。
db.storeCollection.findOne({'version':'3.5'})
參數爲查詢條件,可選,系統會隨機查詢獲取到知足條件的一條記錄(若是存在查詢結果數量大於等於1)。
查詢多條記錄。
db.storeCollection.find()
使用find()函數,參數指定查詢條件,不指定條件則查詢所有記錄。
條件查詢包括4種方法:
// 1. $gt(>)、$gte(>=)、$lt(<)、$lt(<=)、$ne(!=)、沒有特殊關鍵字(=) db.testCollection.find({age: {$$gt:5}}).count() //14。note:去掉gt前面一個$符號,$符號會被解析,wiznote搞的鬼!!! db.testCollection.find({age: {$gte:5}}).count() //28 db.testCollection.find({age: {$lt:5}}).count() //71 db.testCollection.find({age: {$lte:5}}).count() //85 db.testCollection.find({age: {$ne:5}}).count() //85 db.testCollection.find({age: 5}).count() //14 // 2. 沒有特殊關鍵字(&&)、 $or(||)、$in()、$nin() db.testCollection.find({age: {$$gt: 5}, password:'123456'}).count() //年齡大於5且密碼爲123456, 14。 //年齡爲5或者名字爲name26,18 db.testCollection.find({$or:[{age: 5}, {name:'name26'}]}).count() db.testCollection.find({age: {$in: [1,5, 6]}}).count() //年齡在一、五、6中,43。 db.testCollection.find({age: {$nin: [1,5, 6]}}).count() //年齡不在一、五、6中,56 // 3. 正則表達式匹配,威力強勁 db.testCollection.find({name: /^name1\d/}).count() //名字以name1開頭的,從name10到name19的記錄。41 //4. where語句,大招來了 db.testCollection.find({$where:function(){return this.age > 5} }).count()
刪除紀錄
db.storeCollection.findOne({'version': '3.5'}) (刪除version爲3.5的紀錄) db.storeCollection.findOne({'version': '3.5'}) (返回結果爲空)
統計集合記錄數
db.storeCollection.count()
查詢並統計結果記錄數
db.storeCollection.find({'segment':'e30l8'}).count()