11

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

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_");
   }

有什么建议/解决方案吗?

4

2 回答 2

18

不,你不能删除它。

MongoDB 文档中,强调我的;

_id 索引

对于除上限集合之外的所有集合,会自动为 _id 字段创建索引。这个索引是特殊的, 不能删除。_id 索引强制其键的唯一性(除了一些分片的情况)。

于 2012-09-15T16:11:34.963 回答
4

_id索引一旦创建就不能删除。但是,您可以通过将选项设置为使用来创建没有_id索引的集合,但如果没有索引,您将无法复制您的集合。autoIndexIdfalsedb.createCollection_id

于 2015-07-24T16:42:05.660 回答