2012-09-15 44 views
6

我有一個集合,我不需要任何索引。我只是存儲用戶搜索詞和日期,所以我的收藏非常簡單。我可以刪除默認的MongoDB索引嗎?

class UserSearch { 

public string Term {get; set;} 
pulic DateTime Date {get;set;} 

} 

當我存儲一個UserSearch項目時,我的集合有_id和默認索引。

據我所知,這些「_id」字段將以內存索引,所以我不想花費內存來存儲我剛剛存儲的內存,我每12小時計算一次內存。

我嘗試刪除它,但我不能。

var indexes = UserSearch(true).GetIndexes(); 

    //delete UserSearch Default Index 
    if(UserSearch(true).IndexExistsByName("_id_")) 
    { 
    UserSearch(true).DropIndexByName("_id_"); 
    } 

任何建議/解決方案?

回答

12

不,您不能刪除它。從,重點是我的;

的_id指數

對所有集合除封頂集合,是 自動爲_id字段創建一個索引。該索引是特殊的,並且 不能被刪除。 _id索引對其鍵 執行唯一性(某些分片情況除外)。

1

您創建後不能刪除_id索引。但是,您可以通過將autoIndexId選項設置爲false並使用db.createCollection而不是_id來創建不帶_id索引的集合,但不能複製集合。

+0

實際上,您不需要_id來進行復制或分片。您可以設置任何其他索引或複合索引。 –

+1

@AdrianLopez請注意以下警告:'重要 對於副本集,請勿將autoIndexId設置爲false.' https://docs.mongodb.com/manual/reference/method/db.createCollection/#db.createCollection –

+0

我在我的答案中提到了這一點@KevinJohnson – styvane

相關問題