我有一个集合,我不需要任何索引。我只存储用户搜索词和日期,所以我的收藏非常简单。
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_");
}
有任何建议/解决方案吗?
答案 0 :(得分:12)
不,你不能删除它。
来自MongoDB documentation,强调我的;
_id索引
对于除上限集合之外的所有集合,索引为 自动为_id字段创建。这个指数很特别 无法删除 。 _id索引强制其键的唯一性 (除了某些带分片的情况)。
答案 1 :(得分:2)
创建后,您无法删除_id
索引。但是,您可以使用db.createCollection
将_id
选项设置为autoIndexId
但不使用false
来创建不带_id
索引的集合,但您无法复制您的收藏集