日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mongoDB的常用语法

發(fā)布時間:2025/6/17 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mongoDB的常用语法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

安裝:

到mongodb官網(wǎng)下載安裝包或者壓縮包:https://www.mongodb.com/download-center?jmp=nav 1、如果是msi包的話則點擊按步驟安裝,如果是壓縮包的話不用安裝; 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默認端口是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ù)語/概念解釋/說明
databasedatabase數(shù)據(jù)庫
tablecollection數(shù)據(jù)庫表/集合
rowdocument數(shù)據(jù)記錄行/文檔
columnfield數(shù)據(jù)字段/域
indexindex索引
table joins?表連接,MongoDB不支持
primary keyprimary key主鍵,MongoDB自動將_id字段設(shè)置為主鍵
MongoDB的默認數(shù)據(jù)庫為"db",該數(shù)據(jù)庫存儲在data目錄中。 MongoDB的單個實例可以容納多個獨立的數(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雙精度浮點值。用于存儲浮點值。
Min/Max keys將一個值與 BSON(二進制的 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二進制數(shù)據(jù)。用于存儲二進制數(shù)據(jù)。
Code代碼類型。用于在文檔中存儲 JavaScript 代碼。
Regular expression正則表達式類型。用于存儲正則表達式。
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庫,因為test庫中剛開始沒有任何數(shù)據(jù)并且是在內(nèi)存中的,有了數(shù)據(jù)后就會顯示出來了(其他新創(chuàng)建的數(shù)據(jù)庫也是如此) db.dropDatabase();//刪除當(dāng)前數(shù)據(jù)庫,默認為 test,故要切換到某個數(shù)據(jù)庫下進行刪除 集合: 顯式創(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操作實現(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ù)數(shù)量來工作。要是容量滿了則會依據(jù)容量來工作。 查詢 固定條件查詢: 注:mongodb中每條數(shù)據(jù)都有一個id,用來唯一標識一條數(shù)據(jù),id由mongo本身來維護 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()方法默認參數(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,但是實際效果是只是將age為12的滿足條件數(shù)據(jù)的第一條整條數(shù)據(jù)覆蓋為name:“xiaoxiao” db.c3.update({age:15},{$set:{name:"xiaolili"}});//本意為將age為15的數(shù)據(jù)的name修改為xiaolili,但是實際效果是只修改了查詢到的第一條數(shù)據(jù) db.c3.update({age:15},{$set:{name:"xiaolili"}},1,1);//將age為15的數(shù)據(jù)的name修改為xiaolili 總共4個參數(shù),第四個參數(shù)表示有多條數(shù)據(jù)符合篩選條件的話是否全部更改,默認為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默認為每條數(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ù)庫實例,如: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ù)庫實例,如: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)容還不錯,歡迎將生活随笔推薦給好友。