mongodb經常使用命令操做

基本命令

  1. 顯示當前數據庫服務器上的數據庫
    show dbshtml

  2. 切換到指定數據庫的上下文,能夠在此上下文中管理testdb數據庫以及其中的集合等
    use testdb正則表達式

  3. 顯示數據庫中全部的集合(collection)
    show collections數據庫

  4. 查看數據庫服務器的狀態
    db.serverStatus() 服務器

  5. 查詢指定數據庫統計信息
    use fragmentapp

db.stats()dom

基本DDL和DML

  • 建立數據庫。
    直接經過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(&gt;)、$gte(&gt;=)、$lt(&lt;)、$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. 沒有特殊關鍵字(&amp;&amp;)、 $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 &gt; 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()

參考連接

> csdn
cnblogs

相關文章
相關標籤/搜索