首頁  >  文章  >  資料庫  >  詳細介紹MongoDB常用的操作

詳細介紹MongoDB常用的操作

零下一度
零下一度原創
2017-07-03 16:40:451237瀏覽

MongoDB 是由C++語言編寫的,是基於分散式檔案儲存的開源資料庫系統。在高負載的情況下,增加更多的節點,可以保證伺服器效能。 MongoDB 旨在為WEB應用提供可擴充的高效能資料儲存解決方案。

一、增刪改查

查看目前資料庫中所有的集合,使用指令 

show collections 或使用
show tables

建立集合有兩種方式,顯示建立和隱式建立


显示创建可以使用命令 db.createCollection(“集合名称")
隐式创建可以使用命令 db.集合名称.insert({}),
指创建集合并同时向集合中插入数据,
例如:db.customer.insert({name:”jack”})

為集合新增文件

使用指令db.集合名稱.insert({}),例如:

db.user1.insert({name:”jack”,age:20})

#刪除集合中的文件


使用命令 db.集合名称.remove({删除条件}),
不加删除条件为删除集合中的所有文档:
例如,删除c1集合中的所有文档 db.c1.remove() 
删除c1集合中name为user1的文档 db.c1.remove({name:”user1”})

查詢集合中的文檔


#
db.集合名称.find({条件})
或者使用 
db.集合名称.findOne() 查询第一个文档

查詢集合中的文檔,傳回某些特定的鍵值
除了查詢表達式以外,MongoDB也支援一些額外的參數選項。
如果僅僅只想傳回某些特定的欄位值:
傳回除了age欄位外的所有欄位
db.user.find({},{age:0});

#回傳tags=tennis除了comments的所有欄位
db.posts.find({tags:'tennis'},{comments:0});

傳回userid=16的name欄位
db.user.find({userid:16},{name:1});
{"_id":16,"name":"user16"}

傳回x=john的所有z字段
db.things.find({x:"john"},{z:1});

查詢集合中的文檔,使用條件表達式(cdf98572887b2c0e8ee7a799db6e5a4c=,!=)
//大於: field > 值
db.collection.find({field:{$gt:value}});

##//小於: field 5bc78e20d3e6991f51c73b66b5a76f86= value

db.collection.find ({field:{$gte:value}});

//小於等於: field <= value

db.collection.find({field:{$lte:value}});

//不等於:  field != value

db.collection.find({field:{$ne:value}});

查詢集合中的文檔,統計( count)、排序(sort)、分頁(skip、limit)



#

db.customer.count();
db.customer.find().count();
db.customer.find({age:{$lt:5}}).count();
db.customer.find().sort({age:1}); 降序-1
db.customer.find().skip(2).limit(3);
db.customer.find().sort({age:-1}).skip(2).limit(3);
db.customer.find().sort({age:-1}).skip(2).limit(3).count();
db.customer.find().sort({age:-1}).skip(2).limit(3).count(0);
db.customer.find().sort({age:-1}).skip(2).limit(3).count(1);

查詢集合中的文件

$all主要用來查詢陣列中的包含關係,
查詢條件中只要有一個不包含就不回傳

$in,類似於

關係型資料庫中的IN

$nin,與$in相反

$or,相當於關係型資料庫中的OR,表示或的關係,

例如查詢name為user2或age為3的文檔,指令為:
db.customer .find({$or:[{name:”user2”},{age:3}]})

#$nor,表示根據條件過濾掉某些數據,例如查詢name不是user2,age不是3的文檔,指令為:

db.customer.find({$nor:[{name:”user2”},{age:3}]})

$exists,用於查詢集合中存在某個鍵的文檔或不存在某個鍵的文檔,例如查詢customer集合中存在name鍵的所有文檔,可以使用

db.customer.find({name:{$exists:1}})
$exists:1表示真,指存在
$exists:0表示假,指不存在

##遊標

更新集合中的文件

語法:db.collection.update(criteria,objNew,upsert,multi)

參數說明:
criteria:用於設定查詢條件的
物件
objNew:用於設定更新內容的物件upsert:如果記錄已經存在,更新它,否則新增一個記錄,取值為0或1
multi:如果有多個符合條件的記錄,是否全部更新,取值為0或1

注意:預設情況下,只會更新第一個符合條件的記錄

一般情況下後兩個參數分別為0,1 ,即:

db.collection. update(criteria,objNew,0,1)

將集合中name為user1的文檔改為name為jack:

db.c1.update({name:"user1"},{name: "jack"})


$set 用來指定一個鍵的值,如果這個鍵不存在,則建立它。例如:

為name為user1的文件新增address,可以使用指令:

db.c1.update({name:”user1”},{$set:{address:”bj”}},0, 1)
將name為user1的文件修改address為tj,
其它
鍵值對不變,指令為:db.c1.update({name:”user1”},{ $set:{address:”tj”}},0,1)
使用$inc 將集合中name為user1的age加1,其它鍵不變,

$inc表示使某個鍵值加減指定的數值

db.c1.update({name:"user1"},{$inc:{age:1}})

$unset 用來刪除某個鍵

例如刪除name為user1的文件中的address鍵,可以使用指令:

db.c1.update({name:”user1”},{$unset:{address:1}},0,1)

二、索引:

索引就是用來加速查詢的。資料庫索引與書籍的索引類似:有了索引就不需要翻遍整本書,資料庫則可以直接在索引中查找,使得查找速度能提高幾個數量級。在索引中找到條目以後,就可以直接跳到目標文件的位置。

普通索引:
建立:db.collection.ensureIndex({key:1})
查看關於索引的相關資訊:db.collection.stats()
查看查詢使用索引的情況:db.collection.find({key:value}).explain()
刪除索引:db.collection.dropIndex({key:1})
刪除集合,也會將集合中的索引全部刪除

唯一索引:
建立:db.collection.ensureIndex({key:1},{unique:true})
查看關於索引的相關資訊:db.collection.stats( )
查看查詢使用索引的情況:db.collection.find({key:value}).explain()
刪除索引:db.collection.dropIndex({key:1})
刪除集合,也會將集合中的索引全部刪除

三、固定集合(capped collection)

##固定集合指的是事先創建且大小固定的集合。

固定集合特性:固定集合很像環形佇列,如果空間不足,最早的文件就會被刪除,為新的文件騰出空間。一般來說,固定集適合用於任何想要自動淘汰過期屬性的場景,沒有太多的操作限制。

建立固定集合:

db.createCollection(“collectionName”,{capped:true,size:100000,max:100}); 
size指定集合大小,單位為KB,max指定文件的數量

當指定文件數量上限時,必須同時指定大小。淘汰機制只有在容量還沒滿時才會依據文件數量來運作。要是容量滿了,淘汰機制會依據容量來運作。

四、備份(mongodump)和還原(mongorestore)

MongoDB提供了備份和還原的功能,分別是MongoDB下載目錄下的mongodump.exe和mongorestore .exe檔(即在mongodb bin目錄下的指令)

備份資料使用下面的指令:

mongodump -h dbhost -d dbname -o dbdirectory
-h:MongDB所在伺服器位址,例如:127.0.0.1,當然也可以指定連接埠號碼:127.0.0.1:27017
-d:需要備份的資料庫實例,例如:test
-o:備份的資料存放位置,例如:c:\ data\dump,當然目錄需要提
前建立,在備份完成後,系統自動在dump目錄下建立一個test目錄,這個
目錄裡面存放該資料庫實例的備份資料。

恢復資料使用下面的指令:

mongorestore -h dbhost -d dbname -directoryperdb dbdirectory
-h:MongoDB所在伺服器位址
-d:需要復原的資料庫實例,例如: test,當然這個名稱也可以和備份時候的不一樣,例如test2
-directoryperdb:備份資料所在位置,例如:c:\data\dump\test

五、導入( mongoimport)和匯出(mongoexport)

匯出資料可以使用指令:

mongoexport -h dbhost -d dbname -c collectionName -o output
參數說明:
-h  資料庫位址
-d 指明使用的函式庫
-c 指明要匯出的集合
-o 指明要匯出的檔案名稱

範例:

mongoexport -h localhost:27017 -d test -c c4 -o d:/beifeng/c4.txt

匯入資料可以使用指令:

mongoimport -h dbhost -d dbname -c collectionname 檔案的位址...
參數說明:
-h  資料庫位址
-d 指明使用的函式庫
-c 指明要匯入的集合
本地的檔案位址...

範例:

mongoimport -h localhost:27017 -d test -c cctv d:/beifeng/c4.txt

以上是詳細介紹MongoDB常用的操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn