我可以删除默认的MongoDB索引吗?

时间:2012-09-15 16:08:39

标签: mongodb indexing nosql

我有一个集合,我不需要任何索引。我只存储用户搜索词和日期,所以我的收藏非常简单。

class UserSearch {

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

}

当我存储一个UserSearch项时,我的集合上有_id和默认索引。

据我所知,那些“_id”字段将在ram中编入索引,因此我不想将ram内存花在我刚存储的收集上,而且我每12小时计算一次。

我尝试删除它,但我不能。

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

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

有任何建议/解决方案吗?

2 个答案:

答案 0 :(得分:12)

不,你不能删除它。

来自MongoDB documentation,强调我的;

  

_id索引

     

对于除上限集合之外的所有集合,索引为   自动为_id字段创建。这个指数很特别    无法删除 。 _id索引强制其键的唯一性   (除了某些带分片的情况)。

答案 1 :(得分:2)

创建后,您无法删除_id索引。但是,您可以使用db.createCollection_id选项设置为autoIndexId但不使用false来创建不带_id索引的集合,但您无法复制您的收藏集