2015-02-23 16 views
6

Ich muss fünf Indizes in einer großen MongoDB-Sammlung erstellen. Ich kenne die Operation 'secureIndex', aber ich kenne keine Möglichkeit, alle fünf Indizes mit einem einzigen Befehl zu erstellen. Ist diese Batch-Index-Erstellung in MongoDB möglich?Mehrere Indizes gleichzeitig erstellen

Antwort

-1

Ich denke, das ist nicht mit einzelnen Befehl möglich, aber Sie können Ihr eigenes Skript erstellen, die dasselbe ausführen. Wenn Ihre Sammlungsgröße groß ist, empfehle ich Ihnen, Indizes separat mit Hintergrundtrue zu erstellen, um die Wahrscheinlichkeit eines Locking-Problems zu verringern.

db.collection.ensureIndex({ a: 1 }, { background: true }) 
0

Derzeit gibt es keine Lösung dafür.

Im Hintergrund wird verhindert, dass die Datenbank gesperrt wird und andere Vorgänge ausgeführt werden können. Aber um diese Operationen auszuführen, müssen Sie eine neue Mongo-Shell öffnen oder sie asynchron in der Sprache Ihrer Wahl ausführen (wie js).

Aber wenn Sie eine starke Konsistenz benötigen und keine Hintergrundindexerstellung benötigen ... müssen Sie wahrscheinlich warten, bis eine native native Lösung von MongoDB kommt.

3

Dies ist ziemlich einfach innerhalb der Shell, es gibt eine Erweiterung der Sammlung createIndexes und Sie geben nur die Schlüssel, die Sie Indizes erstellen möchten.

db.test.createIndexes([ 
     { "a" : 1 }, 
     { "b" : 1 }, 
     { "c" : 1 }, 
     { "d" : 1 }, 
     { "e" : 1 } 
    ]); 

Dies wird uns dann die

folgenden geben
> db.test.getIndexes() 
[ 
     { 
       "v" : 2, 
       "key" : { 
         "_id" : 1 
       }, 
       "name" : "_id_", 
       "ns" : "test.test" 
     }, 
     { 
       "v" : 2, 
       "key" : { 
         "a" : 1 
       }, 
       "name" : "a_1", 
       "ns" : "test.test" 
     }, 
     { 
       "v" : 2, 
       "key" : { 
         "b" : 1 
       }, 
       "name" : "b_1", 
       "ns" : "test.test" 
     }, 
     { 
       "v" : 2, 
       "key" : { 
         "c" : 1 
       }, 
       "name" : "c_1", 
       "ns" : "test.test" 
     }, 
     { 
       "v" : 2, 
       "key" : { 
         "d" : 1 
       }, 
       "name" : "d_1", 
       "ns" : "test.test" 
     }, 
     { 
       "v" : 2, 
       "key" : { 
         "e" : 1 
       }, 
       "name" : "e_1", 
       "ns" : "test.test" 
     } 
] 
> 
Verwandte Themen