MongoDB總結(jié)(一)

漲姿勢

1.MySQL與Mongo中的一些概念對比:

SQL術(shù)語/概念            MongoDB術(shù)語/概念            解釋/說明
database                database                    數(shù)據(jù)庫
table                   collection                  數(shù)據(jù)庫表/集合
row                     document                    數(shù)據(jù)記錄行/文檔
column                  field                       數(shù)據(jù)字段(列)/域
index                   index                       索引
table joins                                         表連接,MongoDB不支持
primary key             primary key                 主鍵,MongoDB自動將_id字段設置為主鍵

基本語法規(guī)則

1.DDL語法(操作數(shù)據(jù)庫及表的結(jié)構(gòu))

----++----對數(shù)據(jù)庫的操作----++----
1.1 查看所有數(shù)據(jù)庫

show dbs    #查看所有數(shù)據(jù)庫
db  #查看當前數(shù)據(jù)庫

1.2 創(chuàng)建及使用數(shù)據(jù)庫:

#若沒有此數(shù)據(jù)庫則創(chuàng)建
use tbl

1.3刪除數(shù)據(jù)庫

#刪除當前數(shù)據(jù)庫
db.dropDatabases()

----++----對集合結(jié)構(gòu)(MySQL中的表)的操作----++----

1.4 創(chuàng)建集合

db.createCollection(name棕叫,options)
db.createCollection("mycol", {capped : true, autoIndexId : true, size : 6142800, max : 10000 })
e.g.    db.createCollection("mycollection") 

options參數(shù)是可選的贴妻,因此只需要指定集合的名稱。 以下是可以使用的選項列表:

字段                  類型                  描述
capped              Boolean(可選)          如果為true,則啟用封閉的集合。上限集合是固定大小的集合,它在達到其最大大小時自動覆蓋其最舊的條目。 如果指定true师痕,則還需要指定size參數(shù)。
autoIndexId         Boolean (可選)         如果為true而账,則在_id字段上自動創(chuàng)建索引。默認值為false因篇。
size                數(shù)字  (可選)            指定上限集合的最大大小(以字節(jié)為單位)泞辐。 如果capped為true,那么還需要指定此字段的值竞滓。
max                 數(shù)字  (可選)            指定上限集合中允許的最大文檔數(shù)咐吼。

在插入文檔時,MongoDB首先檢查上限集合capped字段的大小商佑,然后檢查max字段锯茄。

1.5 查看數(shù)據(jù)庫中的所有集合

show collections
或
show tables

1.6 查看集合的結(jié)構(gòu)

db.mycol1.find()

1.7 刪除集合

db.mycol1.drop()

修改集合:

mongoDB沒有表的概念,都是一個個集合茶没,所以這里只說一個修改集合的鍵值的方法肌幽。

1.8 修改集合之修改鍵值(MySQL中對應為字段名)

db.mycol1.update({}, {$rename:{"舊鍵名稱":"新鍵名稱"}}, false, true)

第一個false表示:可選,這個參數(shù)的意思是抓半,如果不存在update的記錄喂急,true為插入新的記錄,默認是false笛求,不插入廊移。

第二個true表示:可選,mongodb 默認是false,只更新找到的第一條記錄探入,如果這個參數(shù)為true,就把按條件查出來多條記錄全部更新狡孔。

2.DDL語法(數(shù)據(jù)操作)

2.1 增

法一:

db.mycol1.insert({
    name:'zhangsan',
    age:23,
    phone:1877768121
})

法二:

document = ({
    name:'lisi',
    age:19,
    phone:15633577595
});

db.mycol1.insert(document)

2.2 改

2.2.1 update()方法

db.collection.update(criteria,objNew,upsert,multi)

參數(shù)說明:
query:用于設置查詢條件的對象,可以理解為sql查詢中的where后面的
update:用于設置更新內(nèi)容的對象蜂嗽,也可以理解為sql update查詢內(nèi)set后面的
upsert:如果記錄不存在是否新增一個記錄苗膝,默認false
multi:如果有多個符合條件的記錄,是否全部更新植旧,默認為false
writeConcern :可選荚醒,拋出異常的級別。

db.mycol1.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

e.g.

#將用戶名稱為"zhangsan"用戶的年齡更改為18隆嗅。    
db.col_1.update({name:'zhangsan'},{$set:{age:18}})
#后面默認為false,false,這兩個組合可以分出很多情況界阁。

2.2.1 save()方法

save()方法為替換原有文檔

db.mycol1.save({
    "_id" : ObjectId("56064f89ade2f21f36b03136"),
    "title" : "MongoDB",
    "description" : "MongoDB 是一個 Nosql 數(shù)據(jù)庫",
    "by" : "Runoob",
    "url" : "http://www.runoob.com",
    "tags" : [
            "mongodb",
            "NoSQL"
    ],
    "likes" : 110
})

2.3 刪

db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)
以下為實例:

#刪除所有的文檔
db.mycol1.remove({})

#移除集合中查詢到的數(shù)據(jù)的第一條,后面設成1或者true,表示只刪除一個文檔。
db.mycol1.romve({name:'zhangsan'},1)

3.DQL語法(數(shù)據(jù)查詢)

3.1 基礎(chǔ)語法:

MongoDB 查詢數(shù)據(jù)的語法格式如下:
db.collection.find(query, projection)
query :可選胖喳,使用查詢操作符指定查詢條件
projection :可選泡躯,使用投影操作符指定返回的鍵。查詢時返回文檔中所有鍵值, 只需省略該參數(shù)即可(默認省略)较剃。
如果你需要以易讀的方式來讀取數(shù)據(jù)咕别,可以使用 pretty() 方法,語法格式如下:
>db.col.find().pretty()
pretty() 方法以格式化的方式來顯示所有文檔写穴。

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

db.mycol1.find()        #查詢所有文檔
db.mycol1.findOne()     #查詢第一個文檔
db.mycol1.find().pretty()   #查詢所有文檔并格式化輸出
db.mycol1.find().count()    #查詢到的文檔的數(shù)目
db.mycol1.find().skip()     #跳過指定數(shù)量的數(shù)據(jù)
db.mycol1.find().limit()    #顯示文檔數(shù)

e.g.讀取十條數(shù)據(jù)后的100條記錄
db.mycol1.find().skip(10).limit(100)

3.2 查詢+where語句

如果你想獲取"col"集合中 "likes" 大于100惰拱,小于 200 的數(shù)據(jù),你可以使用以下命令:

db.mycol1.find({likes : {$lt :200, $gt : 100}})

// 類似于SQL語句:
Select * from mycol1 where likes>100 AND  likes<200;

條件操作符       中文          全英文
    $gt         大于          greater than
    $gte        大于等于       greater than equal
    $lt         小于           less than
    $lte        小于等于        less than equal
    $ne         不等于         not equal

3.3 AND條件

find() 方法可以傳入多個鍵(key)啊送,每個鍵(key)以逗號隔開偿短,語法格式如下:

db.col_1.find({name:'zhangsan',age:18}).pretty()

3.4 OR 條件

db.col_1.find({$or:[{name:'zhangsan'},{age:20}]}).pretty()

3.5 AND 和 OR 聯(lián)合使用

db.col_1.find({"likes":{$gt:50},$or:[{age:20},{phone:15633577595}]}).pretty()

3.6 $exists()

$exists,用于查詢集合中存在某個鍵的文檔或不存在某個鍵的文檔,例如查詢col_1集合中存在name鍵的所有文檔

db.col_1.find({name:{$exists:1}})

3.7 $in和$nin

查詢年齡在18馋没,19昔逗,20在這個區(qū)間的文檔

db.col_1.find({age:{$in:[18,19,20]}})

查詢年齡不在18,19篷朵,20在這個區(qū)間的文檔

db.col_1.find({age:{$nin:[18,19,20]}})

部分部署可參考:http://blog.csdn.net/sinat_36841379/article/details/70653027

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末勾怒,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子声旺,更是在濱河造成了極大的恐慌笔链,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腮猖,死亡現(xiàn)場離奇詭異卡乾,居然都是意外死亡,警方通過查閱死者的電腦和手機缚够,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門幔妨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谍椅,你說我怎么就攤上這事误堡。” “怎么了雏吭?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵锁施,是天一觀的道長。 經(jīng)常有香客問我杖们,道長悉抵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任摘完,我火速辦了婚禮姥饰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘孝治。我一直安慰自己列粪,他們只是感情好审磁,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著岂座,像睡著了一般态蒂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上费什,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天钾恢,我揣著相機與錄音,去河邊找鬼鸳址。 笑死瘩蚪,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的氯质。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼祠斧,長吁一口氣:“原來是場噩夢啊……” “哼闻察!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起琢锋,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤辕漂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后吴超,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钉嘹,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年鲸阻,在試婚紗的時候發(fā)現(xiàn)自己被綠了跋涣。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡鸟悴,死狀恐怖陈辱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情细诸,我是刑警寧澤沛贪,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站震贵,受9級特大地震影響利赋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜猩系,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一媚送、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧寇甸,春花似錦季希、人聲如沸褪那。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽博敬。三九已至,卻和暖如春峰尝,著一層夾襖步出監(jiān)牢的瞬間偏窝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工武学, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留祭往,地道東北人。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓火窒,卻偏偏與公主長得像硼补,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子熏矿,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容