1. 程式人生 > 其它 >平衡樹入門

平衡樹入門

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}})