平衡樹入門
2.3 常用命令
2.3.1 選擇和建立資料庫
選擇和建立資料庫的語法格式:
xxxxxxxxxx
use資料庫名稱
如果資料庫存在則選擇該資料庫,如果資料庫不存在則自動建立。以下語句建立commentdb資料庫:
xxxxxxxxxx
use commentdb
檢視資料庫:
xxxxxxxxxx
show dbs
檢視集合,需要先選擇資料庫之後,才能檢視該資料庫的集合:
xxxxxxxxxx
show collections
2.3.2 插入與查詢文件
選擇資料庫後,使用集合來對文件進行操作,插入文件語法格式:
xxxxxxxxxx
db.集合名稱.insert(資料);
插入以下測試資料:
xxxxxxxxxx
db.comment.insert({content:"十次方課程",userid:"1011"})
查詢集合的語法格式:
xxxxxxxxxx
db.集合名稱.find()
查詢spit集合的所有文件,輸入以下命令:
xxxxxxxxxx
db.comment.find()
發現文件會有一個叫_id的欄位,這個相當於我們原來關係資料庫中表的主鍵,當你在插入文件記錄時沒有指定該欄位,MongoDB會自動建立,其型別是ObjectID型別。如果我們在插入文件記錄時指定該欄位也可以,其型別可以是ObjectID型別,也可以是MongoDB支援的任意型別。
輸入以下測試語句:
xxxxxxxxxx
db.comment.insert({_id:"1",content:"到底為啥出錯",userid:"1012",thumbup:2020});
db.comment.insert({_id:"2",content:"加班到半夜",userid:"1013",thumbup:1023});
db.comment.insert({_id:"3",content:"手機流量超了咋辦",userid:"1013",thumbup:111});
db.comment.insert({_id:"4",content:"堅持就是勝利",userid:"1014",thumbup:1223});
按一定條件來查詢,比如查詢userid為1013的記錄,只要在find()中新增引數即可,引數也是json格式,如下:
xxxxxxxxxx
db.comment.find({userid:'1013'})
只需要返回符合條件的第一條資料,我們可以使用findOne命令來實現:
xxxxxxxxxx
db.comment.findOne({userid:'1013'})
返回指定條數的記錄,可以在find方法後呼叫limit來返回結果,例如:
xxxxxxxxxx
db.comment.find().limit(2)
2.3.3 修改與刪除文件
修改文件的語法結構:
xxxxxxxxxx
db.集合名稱.update(條件,修改後的資料)
修改_id為1的記錄,點贊數為1000,輸入以下語句:
xxxxxxxxxx
db.comment.update({_id:"1"},{thumbup:1000})
執行後發現,這條文件除了thumbup欄位其它欄位都不見了。
為了解決這個問題,我們需要使用修改器$set來實現,命令如下:
xxxxxxxxxx
db.comment.update({_id:"2"},{$set:{thumbup:2000}})
刪除文件的語法結構:
xxxxxxxxxx
db.集合名稱.remove(條件)
以下語句可以將資料全部刪除,慎用~
xxxxxxxxxx
db.comment.remove({})
刪除條件可以放到大括號中,例如刪除thumbup為1000的資料,輸入以下語句:
xxxxxxxxxx
db.comment.remove({thumbup:1000})
2.3.4 統計條數
統計記錄條件使用count()方法。以下語句統計spit集合的記錄數:
xxxxxxxxxx
db.comment.count()
按條件統計 ,例如統計userid為1013的記錄條數:
xxxxxxxxxx
db.comment.count({userid:"1013"})
2.3.5 模糊查詢
MongoDB的模糊查詢是通過正則表示式的方式實現的。格式為:
xxxxxxxxxx
/模糊查詢字串/
查詢評論內容包含“流量”的所有文件,程式碼如下:
xxxxxxxxxx
db.comment.find({content:/流量/})
查詢評論內容中以“加班”開頭的,程式碼如下:
xxxxxxxxxx
db.comment.find({content:/^加班/})
2.3.6 大於 小於 不等於
<, <=, >, >= 這個操作符也是很常用的,格式如下:
xxxxxxxxxx
db.集合名稱.find({"field":{$gt:value}})//大於:field>value
db.集合名稱.find({"field":{$lt:value}})//小於:field<value
db.集合名稱.find({"field":{$gte:value}})//大於等於:field>=value
db.集合名稱.find({"field":{$lte:value}})//小於等於:field<=value
db.集合名稱.find({"field":{$ne:value}})//不等於:field!=value
查詢評論點贊數大於1000的記錄:
xxxxxxxxxx
db.comment.find({thumbup:{$gt:1000}})
2.3.7 包含與不包含
包含使用$in操作符
查詢評論集合中userid欄位包含1013和1014的文件:
xxxxxxxxxx
db.comment.find({userid:{$in:["1013","1014"]}})
不包含使用$nin操作符
查詢評論集合中userid欄位不包含1013和1014的文件:
xxxxxxxxxx
db.comment.find({userid:{$nin:["1013","1014"]}})
2.3.8 條件連線
我們如果需要查詢同時滿足兩個以上條件,需要使用$and操作符將條件進行關聯(相當於SQL的and)。格式為:
xxxxxxxxxx
$and:[{條件},{條件},{條件}]
查詢評論集合中thumbup大於等於1000 並且小於2000的文件:
xxxxxxxxxx
db.comment.find({$and:[{thumbup:{$gte:1000}},{thumbup:{$lt:2000}}]})
如果兩個以上條件之間是或者的關係,我們使用操作符進行關聯,與前面and的使用方式相同,格式為:
xxxxxxxxxx
$or:[{條件},{條件},{條件}]
查詢評論集合中userid為1013,或者點贊數小於2000的文件記錄:
xxxxxxxxxx
db.comment.find({$or:[{userid:"1013"},{thumbup:{$lt:2000}}]})
2.3.9 列值增長
對某列值在原有值的基礎上進行增加或減少,可以使用$inc運算子:
xxxxxxxxxx
db.comment.update({_id:"2"},{$inc:{thumbup:1}})