創(chuàng)建索引可以指定一些選項(xiàng),使用不同的選項(xiàng)建立的索引會(huì)有不同的行為。
創(chuàng)新互聯(lián)建站專注于福田企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城網(wǎng)站定制開(kāi)發(fā)。福田網(wǎng)站建設(shè)公司,為福田等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站策劃,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)一、唯一索引
唯一索引可以確保每一個(gè)文檔的指定鍵都有唯一的值。例如,想確定文檔中的username鍵不重復(fù),創(chuàng)建一個(gè)唯一索引:
> db.users.findOne() { "_id" : ObjectId("54ad5826245d1b7d58b53238"), "i" : 2, "username" : "user2", "age" : 39, "created" : ISODate("2015-01-07T16:00:38.634Z") }> db.users.ensureIndex({"username":1},{"unique":true}) { "createdCollectionAutomatically" : false, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }> db.users.insert({"username":"user2"}) WriteResult({ "nInserted" : 0, "writeError" : { "code" : 11000, "errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: blog.users.$username_1 dup key: { : \"user2\" }" } }) >
可以看出創(chuàng)建唯一索引后,就不能插入相同的鍵值;
1.唯一復(fù)合索引
創(chuàng)建唯一復(fù)合索引,復(fù)合索引的單鍵值可以重復(fù),但是組成唯一復(fù)合索引的組合鍵值只能唯一。例如:
如果有一個(gè){“username”:”user2”,”age”:18}有唯一的索引,下面的插入是合法的,
>db.users.insert({“username”:”bob”}) >db.users.insert({“username”:”bob”,”age”:23}) >db.users.insert({“username”:”fred”,”age”:23})如果再次插入這三項(xiàng)中的任意一個(gè),會(huì)導(dǎo)致鍵重復(fù)異常;
2.去重復(fù)
對(duì)于已經(jīng)有重復(fù)值的字段上創(chuàng)建唯一索引,會(huì)引起錯(cuò)誤;可以使用dropDups選項(xiàng)遇到重復(fù)值會(huì)保留第一個(gè),刪除其他重復(fù)項(xiàng);
>db.users.ensureIndex({“username”:1},{“unique”:true,”dropDups”:true})慎用這個(gè)選項(xiàng),因?yàn)楦緵](méi)有辦法控制刪除哪些文檔;
二、稀疏索引
如果有一個(gè)可能存在也有可能不存在的字段,在此字段上創(chuàng)建的索引稱為稀疏索引。
創(chuàng)建唯一稀疏索引:
>db.users.ensureIndex({“username”:1},{“unique”:true,”sparse”:true})創(chuàng)建非唯一稀疏索引:
>db.users.ensureIndex({“username”:1},{”sparse”:true})另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。