2 回答

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊
每次Create
調(diào)用函數(shù)時(shí),您的代碼都會(huì)嘗試創(chuàng)建索引,這會(huì)起作用,但效率不高,因?yàn)樗饕恍枰獎(jiǎng)?chuàng)建一次(或者如果它不存在)。我建議讓創(chuàng)建索引成為建立與數(shù)據(jù)庫連接的函數(shù)的責(zé)任,或者在初始化數(shù)據(jù)庫連接后立即運(yùn)行的函數(shù),這樣它只運(yùn)行一次(當(dāng)你的程序啟動(dòng)時(shí))。
由于該collection.Indexes().CreateOne(...)
方法在嘗試創(chuàng)建已存在的索引時(shí)不會(huì)返回錯(cuò)誤,因此您可以使用此方法來確保索引存在,類似于非官方 MongoDB 驅(qū)動(dòng)程序的EnsureIndex
功能。
或者,您可以執(zhí)行 Cahaba Data 在他的回答中建議的操作,即使索引創(chuàng)建成為一次性的數(shù)據(jù)庫管理任務(wù),而不是您的應(yīng)用程序的責(zé)任。我之前曾與一些同事就此進(jìn)行過討論,雖然我確實(shí)同意它在技術(shù)上是一次性的數(shù)據(jù)庫管理任務(wù),但我仍然更喜歡讓我的應(yīng)用程序在啟動(dòng)時(shí)確保它需要的索引確實(shí)存在,創(chuàng)建如果不是的話。畢竟,如果有人忘記或創(chuàng)建錯(cuò)誤的索引,我的應(yīng)用程序可能會(huì)出現(xiàn)故障/癱瘓。它還提供了有關(guān)您的應(yīng)用程序需要/使用哪些索引的良好文檔,而不必與數(shù)據(jù)庫管理員進(jìn)行溝通并希望他/她/它會(huì)適當(dāng)?shù)刈⒁馑?。?dāng)然,請(qǐng)隨意形成您自己的意見:)

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
是的,我認(rèn)為創(chuàng)建索引是 1 次 DBA/Admin 事件。這不是應(yīng)用程序/代碼任務(wù)。以適當(dāng)?shù)臋?quán)限登錄 mongo,創(chuàng)建索引,注銷....就是這樣。除了創(chuàng)建索引的 mongo shell 命令之外沒有其他代碼。
- 2 回答
- 0 關(guān)注
- 228 瀏覽
添加回答
舉報(bào)