2012-09-15 3 views
6

インデックスが必要ないコレクションが1つあります。私はちょうどユーザーの検索用語と日付を格納するので、私のコレクションは本当に簡単です。デフォルトのMongoDBインデックスを削除できますか?

class UserSearch { 

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

} 

私は1つのUserSearch項目を保存するとき、私のコレクションは、それに_idと、デフォルトのインデックスしています。

私の知るところでは、これらの "_id"フィールドはRAMで索引付けされるので、私が保存するコレクション用のRAMメモリーを費やしたくないので、12時間ごとに何かを計算しています。

削除しようとしましたが、できません。

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

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

提案/解決策はありますか?

答えて

12

いいえ、削除することはできません。

MongoDB documentationから、強調する鉱山。

頂いたコレクションを除くすべてのコレクションのために_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

関連する問題