mongodb改密碼 mongodb建立索引為什么不會(huì)產(chǎn)生索引碎片?
mongodb建立索引為什么不會(huì)產(chǎn)生索引碎片?如果mongodb直接在前臺(tái)運(yùn)行index命令,會(huì)阻塞整個(gè)數(shù)據(jù)庫(kù)。因此,建議采用背景法建立指標(biāo)。但是,這也會(huì)帶來(lái)一些問(wèn)題。在2.6版本之前,即使二級(jí)服務(wù)器
mongodb建立索引為什么不會(huì)產(chǎn)生索引碎片?
如果mongodb直接在前臺(tái)運(yùn)行index命令,會(huì)阻塞整個(gè)數(shù)據(jù)庫(kù)。因此,建議采用背景法建立指標(biāo)。但是,這也會(huì)帶來(lái)一些問(wèn)題。在2.6版本之前,即使二級(jí)服務(wù)器使用后臺(tái)模式建立索引,二級(jí)服務(wù)器仍然會(huì)以前臺(tái)模式建立索引,這也會(huì)導(dǎo)致數(shù)據(jù)庫(kù)阻塞問(wèn)題。版本2.6修復(fù)了這個(gè)錯(cuò)誤。在版本2.6之后,當(dāng)使用后臺(tái)模式構(gòu)建索引時(shí),它實(shí)際上會(huì)轉(zhuǎn)向在后臺(tái)運(yùn)行。為了盡量減少索引構(gòu)建對(duì)mongodb服務(wù)器的影響,一種方法是將mongodb服務(wù)器轉(zhuǎn)換為單機(jī)模式并進(jìn)行構(gòu)建。具體步驟如下:
1。首先停止輔助服務(wù)器,取消--replset參數(shù)并更改mongodb端口后重新啟動(dòng)mongodb。此時(shí),mongodb將進(jìn)入標(biāo)準(zhǔn)模式;
2。運(yùn)行命令ensureindex以標(biāo)準(zhǔn)模式構(gòu)建索引,建議使用前臺(tái)模式;
3。建立索引后關(guān)閉輔助服務(wù)器,按正常方式啟動(dòng)服務(wù)器
4。按照上述步驟1-3依次建立二級(jí)索引。最后,臨時(shí)將主服務(wù)器轉(zhuǎn)換為輔助服務(wù)器。同樣,根據(jù)方法1-3構(gòu)建索引,然后將其轉(zhuǎn)換到主服務(wù)器。這種方法雖然麻煩,但可以最大限度地減少索引操作對(duì)mongodb的影響,在某些情況下值得做。
mongoDB怎么返回?cái)?shù)組字段數(shù)組的指定索引的?
在mongodb中使用aggregate可以返回?cái)?shù)組字段array的指定索引的元素引用語(yǔ)句:{$match:{“DUID”:15},{$項(xiàng)目:{duid:1個(gè),“default”:1}},{$unwind:“$默認(rèn).styles},{$匹配:{'默認(rèn).styles.status“:1}},{$group:{uid:”$uid“,”defaults“:{$push:”$默認(rèn).styles說(shuō)明:1:篩選數(shù)據(jù){$match:{“DUID”:15}2:獲取所需列{$project:{duid:1個(gè),“default”:1}3:獲取擴(kuò)展的數(shù)組字段{$unwind:“$默認(rèn).styles“}4:條件查詢(xún)數(shù)組元素{$match:{”默認(rèn).styles.status“:1}5:分組后保存結(jié)果{$group:{uid:”$uid“,”defaults“:{$push:”$默認(rèn).styles"}}}