mongodb之(6)mongodb集合與索引

2021-10-01 22:22:41 字數 3740 閱讀 6075

mongodb 中使用 createcollection() 方法來建立集合。

語法格式:

db.createcollection(name, options)
引數說明:options引數:字段

型別描述

bool

(可選)如果為 true,則建立固定集合。固定集合是指有著固定大小的集合,當達到最大值時,它會自動覆蓋最早的文件。當該值為 true 時,必須指定 size 引數。

autoindexid

bool

(可選)如為 true,自動在 _id 字段建立索引。預設為 false。

size

number

maxnumber

(可選)指定固定集合中包含文件的最大數量。

命令示例:

固定集合的訪問模式與其他集合不同,資料被順序寫入磁碟的固定空間。故他們在蝶式磁碟上寫入速度非常快,尤其是集合擁有專用磁碟時。固定集合可用於記錄日誌,儘管他們不夠靈活。雖然可以在建立時指定集合大小,但無法控制什麼時候資料會被覆蓋。

建立固定集合示例:建立大小限制為500g,文件數量限制為1000000000的文件。

建立索引的語法如下:

db.collection.createindex(keys, options)
keys說明:語法中 key 值為你要建立的索引字段,1 為指定按公升序建立索引,-1為按降序來建立索引。createindex()方法中可以設定多個字段建立索引。

options選項說明:

parameter

type

description

background

boolean

建索引過程會阻塞其它資料庫操作,background可指定以後臺方式建立索引,即增加 "background" 可選引數。 background" 預設值為false。

unique

boolean

建立的索引是否唯一。指定為true建立唯一索引。預設值為false.

name

string

索引的名稱。如果未指定,mongodb的通過連線索引的欄位名和排序順序生成乙個索引名稱。

dropdups

boolean

3.0+版本已廢棄。在建立唯一索引時是否刪除重覆記錄,指定 true 建立唯一索引。預設值為 false.

sparse

boolean

對文件中不存在的字段資料不啟用索引;這個引數需要特別注意,如果設定為true的話,在索引欄位中不會查詢出不包含對應欄位的文件.。預設值為 false.

expireafterseconds

integer

指定乙個以秒為單位的數值,完成 ttl設定,設定集合的生存時間。

vindex version

索引的版本號。預設的索引版本取決於mongod建立索引時執行的版本。

weights

document

索引權重值,數值在 1 到 99,999 之間,表示該索引相對於其他索引欄位的得分權重。

default_language

string

對於文字索引,該引數決定了停用詞及詞幹和詞器的規則的列表。 預設為英語

language_override

string

對於文字索引,該引數指定了包含在文件中的欄位名,語言覆蓋預設的language,預設值為 language.

建立索引示例:

> db.city.createindex(,)  > > > db.city.getindexes() [ , "name" : "_id_", "ns" : "location.city" }, , "name" : "uni_code_name", "ns" : "location.city", "background" : true, "sparse" : true } ]
建立索引時可以指定一些選項,使用不同選項建立的索引會有不同的行為。mongodb在建立索引時會阻塞所有對資料庫的讀寫請求,直到索引建立完成。如果希望在建立索引的同時可以處理讀寫請求,可以在建立索引時指定background選項。這樣在建立索引時,如果有新的資料庫請求,建立索引的過程會暫停,但任然對應用程式的效能有較大影響。

唯一索引可以確保集合的每乙個文件的指定鍵都是唯一的。

如果乙個文件沒有對應的鍵,索引會將其作為null儲存,故如果某個鍵建立了唯一索引,但插入了多個缺少該索引鍵的文件,由於集合已經存在乙個該索引鍵的值為null的文件而導致插入失敗。

索引儲存桶的大小時有限制的,如果某個索引條目超出了它的限制,那麼這個條目就不會包含在索引中。這將導致通過索引查詢文件時會丟失文件。所有欄位都必須小於1024位元組才能包含到索引中,如果乙個文件的字段由於太大不能包含在索引裡,mongodb不會返回任何錯誤或警告。

建立唯一索引示例:

> db.city.createindex(,)
唯一索引會把null看做值,所以無法將多個缺少唯一索引中的鍵的文件插入到集合中。然而,在一些情況下,你可能希望唯一索引只對包含相應鍵的文件生效。如果有乙個可能存在也有可能不存在的字段,當其存在時必須唯一,這是可將unique和sparse選擇組合一起使用。稀疏索引不必是唯一的。只要去掉unique選項,就可以建立乙個非唯一的稀疏索引。

ttl索引允許為每個文件設定乙個超時時間,乙個文件達到預設的過期時間後就會被刪除,ttl索引對快取問題非常有用。建立索引時指定expireaftersecs就可建立乙個ttl索引。

mongodb沒分鐘會對ttl索引進行一次清理,所以不應該以秒為單位的時間保證索引的存活狀態。乙個給定的集合上可以有多個ttl索引,但ttl索引不能是復合索引,但可以像普通索引一樣用來優化排序和查詢。

操作頻繁的集合上建立全文本索引可能會導致mongodb過載,所以應該在離線狀態下建立全文本索引,或是在對效能無要求時,建立全文索引會占用很多記憶體。全文本索引的集合的寫入效能比較差,其也會降低分片時的資料遷移速度,因將資料遷移到其他分片時,所有文字需重建索引。

mongodb支援2dsphere(球面型別地圖)索引和2d索引(平面地圖和時間連續)。2dsphere允許使用geojson格式指定點、線和多邊形。

建立地理空間索引示例:

db.city.ensureindex(})
2.2.5.1、地理空間查詢

mongodb的地理空間查詢支援交集、包含、接近查詢,需要將希望查詢的內容指定為形如的格式。

交集查詢:

可以使用$geointersects操作符找出與查詢位置相交的文件。

包含查詢:

可以使用$within查詢完全包含在某個區域的文件。

clipboard.png

接近查詢:

使用$near查詢附近的位置,$near是唯一乙個會對查詢結果進行自動排序的地理空間操作,其返回結果是按照距離由近及遠排序的。

clipboard.png

mongod將MongoDB設定為系統服務自啟

mongod安裝為系統服務開機自啟 配置 1.在安裝的根目錄下 跟bin同級 新建資料夾data,在data資料夾下新建db資料夾用作為資料庫目錄 進入mongodb的bin目錄下開啟cmd輸入 mongod dbpath c program files mongodb win32 x86 64 2...

Haproxy示例之訪問內網mongoDB

haproxy示例之訪問內網mongodb 請參考官方doc usr share doc haproxy 1.4.24 環境 centos6.5 x64 haproxy 1.4.24 一.安裝haproxy yum y install haproxy 二.配置haproxy 說明 172.16.0....

python爬蟲之win7Mongod安裝使用

安裝路徑 還需要建立乙個資料庫儲存位置c mongodb data db 2 新增環境變數,然後開啟cmd執行如下命令告訴資料庫資料儲存位置。mongod dbpath c mongodb data db 然後測試一下是否成功 執行上面的命令時候的cmd對話方塊先不要關閉,然後再開啟乙個cmd框輸入...