安裝:
到mongodb官網(wǎng)下載安裝包或者壓縮包:https://www.mongodb.com/download-center?jmp=nav 1、如果是msi包的話則點(diǎn)擊按步驟安裝,如果是壓縮包的話不用安裝; 2、配置環(huán)境變量:將mongodb的bin目錄配置到環(huán)境變量的path中,或者新建MONGODB_HOME再配置到path中; 3、新建文件夾作為存放mongo的數(shù)據(jù)的地方,然后在dos窗口中執(zhí)行:mongod --dbpath=E:/mongodbIndex (path后面跟要存放數(shù)據(jù)的文件夾路徑),執(zhí)行完后發(fā)現(xiàn)文件夾下有了數(shù)據(jù),此步驟同時表示啟動了服務(wù)端 4、mongodb默認(rèn)端口是27017,上面步驟mongod 命令是屬于啟動mongo服務(wù)端命令,啟動后不能關(guān)閉,否則mongo就關(guān)閉了導(dǎo)致鏈接時出現(xiàn)10061錯誤,所以要新開啟一個窗口執(zhí)行:mongo localhost:27017,表示客戶端連接 注:mongodb可以不設(shè)賬號密碼,通過IP地址和端口直接鏈接 退出輸入:exit 在mongodb中基本的概念是文檔、集合、數(shù)據(jù)庫,下面介紹。
| 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字段設(shè)置為主鍵 |
MongoDB的默認(rèn)數(shù)據(jù)庫為"db",該數(shù)據(jù)庫存儲在data目錄中。 MongoDB的單個實(shí)例可以容納多個獨(dú)立的數(shù)據(jù)庫,每一個都有自己的集合和權(quán)限,不同的數(shù)據(jù)庫也放置在不同的文件中。 MongoDB中常用的幾種數(shù)據(jù)類型。
| 數(shù)據(jù)類型 | 描述 |
| String | 字符串。存儲數(shù)據(jù)常用的數(shù)據(jù)類型。在 MongoDB 中,UTF-8 編碼的字符串才是合法的。 |
| Integer | 整型數(shù)值。用于存儲數(shù)值。根據(jù)你所采用的服務(wù)器,可分為 32 位或 64 位。 |
| Boolean | 布爾值。用于存儲布爾值(真/假)。 |
| Double | 雙精度浮點(diǎn)值。用于存儲浮點(diǎn)值。 |
| Min/Max keys | 將一個值與 BSON(二進(jìn)制的 JSON)元素的最低值和最高值相對比。 |
| Arrays | 用于將數(shù)組或列表或多個值存儲為一個鍵。 |
| Timestamp | 時間戳。記錄文檔修改或添加的具體時間。 |
| Object | 用于內(nèi)嵌文檔。 |
| Null | 用于創(chuàng)建空值。 |
| Symbol | 符號。該數(shù)據(jù)類型基本上等同于字符串類型,但不同的是,它一般用于采用特殊符號類型的語言。 |
| Date | 日期時間。用 UNIX 時間格式來存儲當(dāng)前日期或時間。你可以指定自己的日期時間:創(chuàng)建 Date 對象,傳入年月日信息。 |
| Object ID | 對象 ID。用于創(chuàng)建文檔的 ID。 |
| Binary Data | 二進(jìn)制數(shù)據(jù)。用于存儲二進(jìn)制數(shù)據(jù)。 |
| Code | 代碼類型。用于在文檔中存儲 JavaScript 代碼。 |
| Regular expression | 正則表達(dá)式類型。用于存儲正則表達(dá)式。 |
mongodb語法 數(shù)據(jù)庫: show dbs;//查看所有的數(shù)據(jù)庫 db;//查看當(dāng)前窗口所在的數(shù)據(jù)庫 use 數(shù)據(jù)庫名;//如果數(shù)據(jù)庫不存在,則創(chuàng)建數(shù)據(jù)庫,否則切換到指定數(shù)據(jù)庫。 注:show dbs執(zhí)行結(jié)果沒有看到test庫,但是db查看當(dāng)前庫確是test庫,因?yàn)閠est庫中剛開始沒有任何數(shù)據(jù)并且是在內(nèi)存中的,有了數(shù)據(jù)后就會顯示出來了(其他新創(chuàng)建的數(shù)據(jù)庫也是如此) db.dropDatabase();//刪除當(dāng)前數(shù)據(jù)庫,默認(rèn)為 test,故要切換到某個數(shù)據(jù)庫下進(jìn)行刪除
集合: 顯式創(chuàng)建集合:db.createCollection("collectionName");//創(chuàng)建一個名為collectionName的集合,創(chuàng)建完成后會返回 {"ok",1} json串 隱式創(chuàng)建集合:db.collection2.insert({name:"xiaomu",age:20});//往collection2集合中添加數(shù)據(jù)來創(chuàng)建集合,如果集合不存在就自動創(chuàng)建集合,返回:WriteResult({"nInserted":1}) show collections;//查看集合 db.collection1.count();//統(tǒng)計集合collection1中的數(shù)據(jù)數(shù)量 db.collection1.drop();//刪除集合collection1 注:mongo中支持js,可通過js操作實(shí)現(xiàn)批零處理,如:for(var i=0;i<1000;i++){db.collection2.insert({name:"xiaomu"+i,age:20+i});}
固定集合 固定集合指的是事先創(chuàng)建而且大小固定的集合。 固定集合特性:固定集合很想環(huán)形隊列,如果空間不足,最早的文檔就會被刪除,為新的文檔騰出空間。一般來說,固定集合適用于任何想要自動淘汰過期屬性的場景,沒有太多的操作限制. db.createCollection("collectionName",{capped:true,size:10000,max:100});//size指定集合大小,單位為KB,max指定文檔數(shù)量 當(dāng)文檔數(shù)量上限時必須同時指定大小。淘汰機(jī)制只有在容量還沒滿時才會依據(jù)數(shù)量來工作。要是容量滿了則會依據(jù)容量來工作。
查詢 固定條件查詢: 注:mongodb中每條數(shù)據(jù)都有一個id,用來唯一標(biāo)識一條數(shù)據(jù),id由mongo本身來維護(hù) db.collection1.find();//查詢集合中所有的數(shù)據(jù) db.collection1.find({age:7});//查詢年齡為7的數(shù)據(jù) db.collection1.find({age:7},{name:1}); //查詢年齡為7的數(shù)據(jù),只返回name字段數(shù)據(jù);兩個大括號,前面的存查詢條件,后面的存返回條件,返回條件字段1表示true,表示此字段返回,如果name后面的1改為0則表示不返回name字段,返回除name字段以外的其他字段 注意:如果設(shè)置返回字段有為0的已經(jīng)表示查詢所有除了某字段以外的所有字段就不能再設(shè)置某個字段為1了,有語法沖突 db.collection1.find({age:7,name:"xiaomu"},{name:1,age:1});//查詢age為7,name為xiaomu的數(shù)據(jù),返回name和age字段 注:多條件查詢此處是并列,但是如果多個條件都相同的話如{name:"xiaoli",name:"xioamu"}則會只查詢后一個條件的數(shù)據(jù) db.collection1.find({},{age:1});//查詢所有的數(shù)據(jù),返回age字段 db.collection1.findOne();//查詢集合的第一條數(shù)據(jù)
篩選查詢: gt(greater than)大于;lt(less than)小于;gte(greater then equal)大于等于;lte(less than equal)小于等于;ne(not equal)不等于 db.collection1.find({age:{$gt:10}});//查詢age大于10的數(shù)據(jù)
包含 db.collection1.find({price:{$all:[1,2]}});//(包含。。并且包含。。)此處price是個數(shù)組,此方法查詢所有price包含1和2的數(shù)據(jù) db.collection1.find({price:{$in:[1,2]}});//(包含。。或者包含。。)查詢price中含有1或者2的數(shù)據(jù) db.collection1.find({price:{$nin:[1,2]}});//(不包含。。并且不包含。。)查詢price中不含有1并且不含有2的數(shù)據(jù) db.collection1.find({$or:[{name:"xiaomu"},{price:{$in:[3]}}]});//(。?;蛘?。。)查詢name為xiaomu或者價格包含3的數(shù)據(jù) db.collection1.find({$nor:[{name:"xiaomu"},{name:"xiaoli"}]});//(既不也不)查詢name不為xiaomu或者name不為xiaoli的數(shù)據(jù)
分頁: db.collection1.find().skip(0).limit(10);//查詢從0條開始,查詢10條,skip()方法默認(rèn)參數(shù)為 0?,表示跳過的條數(shù)
排序: db.collection1.find().sort({age:1});//按照年齡升序排序,為-1的話表示降序排序
存在 db.c2.find({hight:{$exists:1}});//查詢存在hight字段的數(shù)據(jù)
刪除: db.collection1.remove({age:7,name:"xiaomu"});//刪除age為7,name為xiaomu的數(shù)據(jù)
更新 db.c3.update({age:12},{name:"xiaoxiao"});//本意為將age為12的數(shù)據(jù)中的name更新為xiaoxiao,但是實(shí)際效果是只是將age為12的滿足條件數(shù)據(jù)的第一條整條數(shù)據(jù)覆蓋為name:“xiaoxiao” db.c3.update({age:15},{$set:{name:"xiaolili"}});//本意為將age為15的數(shù)據(jù)的name修改為xiaolili,但是實(shí)際效果是只修改了查詢到的第一條數(shù)據(jù) db.c3.update({age:15},{$set:{name:"xiaolili"}},1,1);//將age為15的數(shù)據(jù)的name修改為xiaolili 總共4個參數(shù),第四個參數(shù)表示有多條數(shù)據(jù)符合篩選條件的話是否全部更改,默認(rèn)為0只改第一條,改為1后表示全部更改 第3個參數(shù)1表示如果沒有符合條件的記錄是否新增一條記錄,1表示新增,0表示不新增 如:db.c3.update({age:21},{$set:{name:"xiaolili"}},1,1);//如果不存在age為21的數(shù)據(jù)則增加一條,增加的數(shù)據(jù)為{age:12,name:”xiaolili”} db.c3.update({age:12},{name:"xiaoxiao"},{$inc:{age:-2}},1,1);//$inc表示使某個鍵值加減指定的數(shù)值,此處表示將name為xiaoxiao的數(shù)據(jù)的age字段的值減2 db.c3.update({age:12},{name:"xiaoxiao"},{$inc:{age:1}},0,1);//$unset用來刪除某個鍵,此處表示刪除name為xiaoxiao的數(shù)據(jù)的age字段
索引 mongo默認(rèn)為每條數(shù)據(jù)的_id字段建索引 db.c3.ensureIndex({age:1});//為age字段建普通索引 db.c3.dropIndex({age:1});//刪除age字段的索引 db.c3.ensureIndex({age:1},{unique:true});//為age字段建唯一索引,在為字段建了唯一索引后就不能再添加相同值的記錄了
數(shù)據(jù)備份與恢復(fù) 備份:mongodump -h dbhost -d dbname -o dbdirectory -h:mongodb所在服務(wù)器地址,如127.0.0.1,當(dāng)然也可以指定端口號:127.0.0.1:27017 -d:需要備份的數(shù)據(jù)庫實(shí)例,如:test -o:需要備份的數(shù)據(jù)存放的位置,例如:d:\data (如果沒有則自動創(chuàng)建)
恢復(fù):mongorestore -h dbhost -d dbname -directoryperdb dbdirectory -h:mongodb所在服務(wù)器地址,如127.0.0.1,當(dāng)然也可以指定端口號:127.0.0.1:27017 -d:需要備份的數(shù)據(jù)庫實(shí)例,如:test,此名稱也可以和備份的時候不一樣 -directoryperdb :備份數(shù)據(jù)所在的位置,例如:d:\data 注意:恢復(fù)時要在退出mongo命令行狀態(tài)下執(zhí)行
導(dǎo)入與導(dǎo)出 導(dǎo)出:mongoexport -h dbhost -d dbname -c collectionName -o output -h:數(shù)據(jù)庫地址 -d:指明使用的庫 -c:指明要導(dǎo)出的集合 -o:指明要導(dǎo)出的文件路徑加文件名,文件名可以是txt、word、excel等多種文件格式
導(dǎo)入:mongoimport -h dbhost -d dbname -c collectionname 文件的地址路徑 -h:數(shù)據(jù)庫地址 -d:指明使用的庫 -c:指明要導(dǎo)出的集合 注意:導(dǎo)入時要在退出mongo命令行狀態(tài)下執(zhí)行,導(dǎo)入導(dǎo)出與數(shù)據(jù)備份和恢復(fù)相似
轉(zhuǎn)載于:https://www.cnblogs.com/kesimin/p/9441474.html
總結(jié)
以上是生活随笔為你收集整理的mongoDB的常用语法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。