2016-11-23 2 views
1

I持っていた文書の次の構造:Mongooseのスキーマにインデックスを動的に追加できますか?例えば

{ 
    "subject":"Joe owns a dog", 
    "content":"Dogs are man's best friend", 
    "likes": 60, 
    "year":2015, 
    "language":"english" 
} 

とスキーマは次のようになります。

var schema = new Schema({ 
    subject: {type: String}, 
    content: {type: String}, 
    likes: {type: int}, 
    year: {type: int}, 
    language: {type: String} 
} 

schema.createIndex({"subject": "text"}); 

私は動的にインデックスを削除し、より多くのフィールドを持つ別のものを作成できますか?

ここでsubjectフィールドのキーワードを検索すると、動的に変更して「subject」と「content」で検索したいと思います。変更する:

あなたは可能でしょうか?

ありがとうございます。

答えて

4

答えははいです。動的インデックスを作成できます。

ensureIndex(...); mongoDB関数を使用します。

インデックスを削除するには、dropIndexes(...); mongoDB関数を使用します。インデックスを操作


しかし、私はあなたに警告していますが、そのつもりだあなたのコレクションのサイズに依存性能に大きな影響を与える、主要なアクションです。 データベース上のインデックス・ブロック他のすべての操作を作成し、デフォルトでは

:MongoDBのはフォアグラウンドの方法を使用してインデックスを作成するデフォルトでは

は、MongoDBのはそれについて言っていることを見てみましょう。コレクションのインデックスを構築するとき、 コレクションを保持しているデータベースは、 索引作成が

を完了するまで、あなたが本当に動的にインデックスを作成したいのであれば、多分あなたはMongoDBのを作るために検討すべき、読み取りのために利用できないか、書き込み操作バックグラウンドでインデックスを作成するには:MongoDBのデータベースはインデックス構築操作中 可能なままであるように、

が潜在的に長いインデックス構築操作を実行するために、 バックグラウンド操作を考えます。

Here is full mongoDB documentation about Indexes


ensureIndex(...) documentation

dropIndexes(...) documentation

getIndexes(...) documentation

How to call directly mongoDB methods from mongoose

+1

感謝。その後、私はインデックスを変更しないようにします。 – Octtavius

関連する問題