亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

mongodb基本操作方法

2024-07-21 02:53:16
字體:
來源:轉載
供稿:網友

一、mongodb簡介

mongodb屬于文檔型數據庫,儲存的是文檔(Bson->json的二進制化)。我們熟知的MySQL數據庫,它的數據是以表的形式儲存的,每條記錄都具有相同的結構,這樣使得查詢起來很方便,但是卻增加了空間的壓力;文檔型數據庫如mongodb,其數據是以一條條文本的形式儲存,每條數據不需要有相同的結構,這使得具有了良好的靈活性。同時,假如有書籍、書評、書評的回復等信息,如果將這些信息儲存在傳統型數據庫如MYSQL中,至少需要張表,關聯度極其復雜,然而在如mongodb的文檔型數據庫中,用戶只需要將其寫在同一個文檔中即可。mongodb內部執行引擎為JS解釋器, 把文檔存儲成bson結構,在查詢時,轉換為JS對象,并可以通過熟悉的js語法來操作,對于熟悉JS的道友來說,mongodb是一個值得選擇的數據庫

二、mongodb安裝


1.下載mongodb (https://www.mongodb.org ) 2.解壓文件 3.不用編譯,本身就是編譯后的二進制可執行文件。 "alt mongodb 文件夾介紹" 4.啟動mongod服務 進入mongodb的bin目錄下,在命令行鍵入: mongod --dbpath=e:/mongodb/data --logpath=e:/mongodb/log1.log --fork --port=27017 參數解釋: mongod 表名你要執行的操作命令類型,有時候mongod命令無效,這時候使用mongod.exe即可

--dbpath 數據存儲目錄--logpath 日志存儲目錄--fork 運行端口(默認27017)--port 后臺程序運行
注:只有開啟了mongo服務才可以進行數據庫操作,開啟服務后只需要鍵入mongo就可以進入mongodb操作面板

5.mongodb非常的占磁盤空間, 剛啟動后要占3-4G左右,如果你用虛擬機練習,可能空間不夠,導致無法啟動.可以用 –smallfiles 選項來啟動,將會占用較小空間 400M左右.

三、mongo入門命令

1.基本操作 1.1: show dbs 查看當前的數據庫 1.2 use databaseName 選庫 1.2 show tables/collections 查看當前庫下的collection 1.3 如何創建庫? Mongodb的庫是隱式創建,你可以use 一個不存在的庫 然后在該庫下創建collection,即可創建庫 1.4 db.createCollection(‘collectionName’) 創建collection 1.5 collection允許隱式創建 Db.collectionName.insert(document); 1.6 db.collectionName.drop() 刪除collection 1.7 db.dropDatabase(); 刪除database

2.基本操作增刪改查 2..增: insert 介紹: mongodb存儲的是文檔,. 文檔是json格式的對象.

語法: db.collectionName.isnert(document);

2.2: 增加單篇文檔 Db.collectionName.insert({title:’nice day’});

2.3: 增加單個文檔,并指定_id Db.collectionName.insert({_id:8,age:78,name:’lisi’});

2.4.增加多個文檔

db.collectionName.insert([{time:'friday',study:'mongodb'},{_id:9,gender:'male',name:'QQ'}])

刪:remove 語法: db.collection.remove(查詢表達式, 選項); 選項是指 {justOne:true/false},是否只刪一行, 默認為false

注意 1: 查詢表達式依然是個json對象 2: 查詢表達式匹配的行,將被刪掉. 3: 如果不寫查詢表達式,collections中的所有文檔將被刪掉

例1: db.stu.remove({sn:’001’}); 刪除stu表中 sn屬性值為’001’的文檔

例2: db.stu.remove({gender:’m’,true}); 刪除stu表中gender屬性為m的文檔,只刪除1行.

3.update 改 update操作 改誰? — 查詢表達式 改成什么樣? – 新值 或 賦值表達式 操作選項 —– 可選參數

語法: db.collection.update(查詢表達式,新值,選項); 例: db.news.update({name:'QQ'},{name:'MSN'}); 是指選中news表中,name值為QQ的文檔,并把其文檔值改為{name:’MSN’}, 結果: 文檔中的其他列也不見了,改后只有_id和name列了. 即–新文檔直接替換了舊文檔,而不是修改

如果是想修改文檔的某列,可以用$set關鍵字 db.collectionName.update(query,{$set:{name:’QQ’}})

修改時的賦值表達式 $set 修改某列的值 $unset 刪除某個列 $rename 重命名某個列 $inc 增長某個列 $setOnInsert 當upsert為true時,并且發生了insert操作時,可以補充的字段.

4.Option {upsert:true/false,multi:true/false} Upsert—是指沒有匹配的行,則直接插入該行.(和mysql中的replace一樣)

例:db.stu.update({name:'wuyong'},{$set:{name:'junshiwuyong'}},{upsert:true}); 如果有name=’wuyong’的文檔,將被修改 如果沒有,將添加此新文檔

例: db.news.update({_id:99},{x:123,y:234},{upsert:true}); 沒有_id=99的文檔被修改,因此直接插入該文檔

multi: 是指修改多行(即使查詢表達式命中多行,默認也只改1行,如果想改多行,可以用此選項) 例: db.news.update({age:21},{$set:{age:22}},{multi:true}); 則把news中所有age=21的文檔,都修改

查: find, findOne 語法: db.collection.find(查詢表達式,查詢的列); Db.collections.find(表達式,{列1:1,列2:1});

例1:db.stu.find() 查詢所有文檔 所有內容

例2: db.stu.find({},{gendre:1}) 查詢所有文檔,的gender屬性 (_id屬性默認總是查出來)

例3: db.stu.find({},{gender:1, _id:0}) 查詢所有文檔的gender屬性,且不查詢_id屬性

例3: db.stu.find({gender:’male’},{name:1,_id:0}); 查詢所有gender屬性值為male的文檔中的name屬性

5.查詢表達式:

5.1: 最簡單的查詢表達式 {filed:value},是指查詢field列的值為value的文檔

5.2: $ne --- != 查詢表達式 {field:{$nq:value}} 作用–查filed列的值 不等于 value 的文檔

5.3: $nin --> not in

5.4: $all 語法: {field:{$all:[v1,v2..]}} 是指取出 field列是一個數組,且至少包含 v1,v2值

5.5: $exists 語法: {field:{$exists:1}} 作用: 查詢出含有field字段的文檔

5.6: $nor {$nor,[條件1,條件2]} 是指 所有條件都不滿足的文檔為真返回

5.7:用正則表達式查詢 以”諾基亞”開頭的商品 例:db.goods.find({goods_name:/諾基亞.*/},{goods_name:1});

5.8: 用$where表達式來查詢 例: db.goods.find({$where:'this.cat_id != 3 && this.cat_id != 11'});

注意: 用$where查詢時, mongodb是把bson結構的二進制數據轉換為json結構的對象, 然后比較對象的屬性是否滿足表達式.

速度較慢

6.Update時可用的操作符 例:

>db.user.insert({name:'lisi',age:12,sex:'male',height:123,area:'haidian'});->db.user.update({name:'lisi'},{$set:{area:'chaoyang'},$unset:{height:1},$inc:{age:1},$rename:{sex:'gender'}});> db.user.find();{ "_id" : ObjectId("51fc01c4f5de93e1f2856e33"), "age" : 13, "area" : "chaoyang", "gender" : "male", "name" : "lisi" }

$setOnInsert ->相當于mysql中的列的默認值

7.聲明游標: 7.1

var cursor = db.collectioName.find(query,PRojection);Cursor.hasNext() ,判斷游標是否已經取到盡頭Cursor. Next() , 取出游標的下1個單元

7.2 用while來循環游標

> var mycursor = db.bar.find({_id:{$lte:5}})> while(mycursor.hasNext()) {... printjson(mycursor.next());... }

7.3 // 聲明游標 var cursor = db.goods.find(); // 循環游標

for(var doc=true;cursor.hasNext();) { printjson(cursor.next());}

也可以簡寫:

for(var cursor=db.goods.find(), doc=true;cursor.hasNext();) { printjson(cursor.next());}

7.4 游標還有一個迭代函數,允許我們自定義回調函數來逐個處理每個單元. cursor.forEach(回調函數); 例:

> var gettitle = function(obj) {print(obj.goods_name)}> var cursor = db.goods.find();> cursor.forEach(gettitle);

7.5 游標在分頁中的應用 比如查到10000行,跳過100頁,取10行. 一般地,我們假設每頁N行, 當前是page頁 就需要跳過前 (page-1)*N 行, 再取N行, 在mysql中, limit offset,N來實現 在mongo中,用skip(), limit()函數來實現的

var mycursor = db.bar.find().skip(9995); 則是查詢結果中,跳過前9995行

查詢第901頁,每頁10條 則是 varmytcursor=db.bar.find().skip(9000).limit(10);

7.6 通過cursor一次性得到所有數據, 并返回數組. 例:

>var cursor = db.goods.find();> printjson(cursor.toArray()); //看到所有行> printjson(cursor.toArray()[2]); //看到第2行

注意: 不要隨意使用toArray() 原因: 會把所有的行立即以對象形式組織在內存里. 可以在取出少數幾行時,用此功能.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品之草原avav久久| 日韩欧美一区二区三区| 97视频免费在线观看| 一区二区三区国产视频| 丁香五六月婷婷久久激情| 日韩电影中文字幕在线| 欧美怡春院一区二区三区| 亚洲老头同性xxxxx| 亚洲最大成人在线| 日韩美女写真福利在线观看| 久久精品视频99| 日韩视频欧美视频| 成人免费午夜电影| 欧美精品激情在线观看| 91产国在线观看动作片喷水| 亚洲成人动漫在线播放| 欧美亚洲另类在线| 欧美视频免费在线| 欧美精品成人在线| 91精品国产免费久久久久久| 国产suv精品一区二区三区88区| 欧美色xxxx| 国产精品入口免费视频一| 91亚洲一区精品| 91av中文字幕| 日韩精品在线视频美女| 日韩中文字幕在线视频| 国产成人精品在线| 国产精品va在线播放我和闺蜜| 国产丝袜视频一区| 亚洲欧美国产精品| 国产+人+亚洲| 91情侣偷在线精品国产| 超碰日本道色综合久久综合| 亚洲资源在线看| 中文亚洲视频在线| 日韩欧美在线视频| 欧美性高跟鞋xxxxhd| 中文字幕亚洲无线码a| 亚洲欧洲日产国码av系列天堂| 久久久久国产精品免费网站| 国产精品免费电影| 夜夜嗨av色一区二区不卡| 日韩综合视频在线观看| 精品国产一区二区三区四区在线观看| 成人做爰www免费看视频网站| 97精品国产97久久久久久免费| 性欧美在线看片a免费观看| 亚洲午夜未满十八勿入免费观看全集| 久久精品亚洲94久久精品| 8x海外华人永久免费日韩内陆视频| 欧美性xxxxxxxxx| 青草成人免费视频| 久99九色视频在线观看| 中文字幕亚洲情99在线| 久久久久中文字幕| 91精品国产高清| 国产精品99蜜臀久久不卡二区| 国产一区私人高清影院| 日韩视频第一页| 91社区国产高清| 一个人看的www久久| 亚洲第一页中文字幕| 尤物99国产成人精品视频| 成人网在线观看| 亚洲天天在线日亚洲洲精| 亚洲一区二区久久久久久久| 亚洲国产天堂久久综合| 国产一区二区三区18| 97在线精品国自产拍中文| 91免费视频国产| 91在线视频精品| 国产精品白丝jk喷水视频一区| 色婷婷综合久久久久中文字幕1| 国产精品h片在线播放| 精品久久久一区二区| 日韩成人在线视频观看| 久久国产天堂福利天堂| 国产成人福利视频| 国产精品av免费在线观看| 亚洲天堂av在线播放| 国产精品一区二区av影院萌芽| 午夜精品久久久久久久男人的天堂| 欧美黑人狂野猛交老妇| 国产精品第一第二| 日韩最新中文字幕电影免费看| 色偷偷偷综合中文字幕;dd| 69**夜色精品国产69乱| 中文字幕在线看视频国产欧美在线看完整| 日韩在线激情视频| 欧美性猛交xxxx黑人| 日韩av在线天堂网| 亚洲精品国产欧美| 国产精品视频一区二区三区四| 日韩av免费在线观看| 精品少妇一区二区30p| 国产98色在线| 97在线视频免费| 美女国内精品自产拍在线播放| 一区二区三区无码高清视频| 成人做爽爽免费视频| 精品国产福利视频| 久久免费高清视频| 51色欧美片视频在线观看| 97视频com| 亚洲一区制服诱惑| 永久免费精品影视网站| 亚洲福利在线看| 欧美激情伊人电影| 久久影视三级福利片| 久久6免费高清热精品| 亚洲va久久久噜噜噜久久天堂| 亚洲精品日产aⅴ| 成人黄色午夜影院| 亚洲国产欧美在线成人app| 91国自产精品中文字幕亚洲| 另类少妇人与禽zozz0性伦| 97精品一区二区三区| 日韩精品在线视频| 成人黄色影片在线| 欧美大片免费观看在线观看网站推荐| 欧美日韩一区二区免费视频| 精品国产户外野外| 欧美激情精品久久久久久免费印度| 欧美电影院免费观看| 成人激情在线播放| 亚洲性猛交xxxxwww| 国产精品视频999| 国模精品视频一区二区三区| 欧美极品第一页| 成人免费看吃奶视频网站| 欧美国产日本在线| 久久69精品久久久久久国产越南| 日韩毛片在线观看| 亚洲免费小视频| 九九久久国产精品| 黑人巨大精品欧美一区二区三区| 97色伦亚洲国产| 日韩欧美国产成人| 亚洲国产成人精品久久| 九九精品视频在线观看| 国产精品视频免费在线观看| 亚洲国产欧美日韩精品| 福利二区91精品bt7086| 欧美精品在线免费| 欧美在线日韩在线| 欧美影院久久久| 少妇高潮久久77777| 欧美午夜视频一区二区| 欧美人交a欧美精品| 国产精品福利久久久| 伊人av综合网| 国产日韩欧美在线| 亚洲国产精品小视频| 国产日产久久高清欧美一区| 国产成人a亚洲精品| 久久久久久亚洲精品| 久久人人97超碰精品888| 成人精品视频在线| 欧美精品福利视频| 亚洲三级免费看| 亚洲香蕉av在线一区二区三区| 国产成人+综合亚洲+天堂| 在线看日韩欧美|