Was ist die empfohlene Methode zum Löschen von Indizes mit Mongoose?

8

Ich muss mehrere Deployment-Skripts wie Datenmigration und Fixtures für eine MongoDB-Datenbank erstellen und konnte nicht genügend Informationen darüber finden, wie Indizes mithilfe der Mongoose-API gelöscht werden. Dies ist ziemlich einfach, wenn Sie die offizielle MongoDB API verwenden:

  

So löschen Sie alle Indizes für die angegebene Sammlung:

db.collection.dropIndexes();

Allerdings würde ich dafür Mungo verwenden und ich habe versucht, executeDbCommand angepasst von diesen Beitrag , aber ohne Erfolg:

%Vor%

Sollte ich die offizielle MongoDB-API für Node.js verwenden oder habe ich bei diesem Ansatz etwas übersehen?

    
npclaudiu 22.10.2012, 15:21
quelle

2 Antworten

21

Um dies über das Mongoose-Modell für die Sammlung zu tun, können Sie dropAllIndexes der nativen Sammlung:

%Vor%

Aktualisieren

dropAllIndexes ist in der Version 2.x des nativen Treibers veraltet, also dropIndexes sollte stattdessen verwendet werden:

%Vor%     
JohnnyHK 22.10.2012, 16:41
quelle
1

Es sieht so aus, als ob Sie versuchen, alle Indizes für eine bestimmte Sammlung zu löschen.

Laut den MongoDB-Dokumenten ist dies der richtige Befehl .

  

... Ich habe versucht, executeDbCommand zu verwenden, das von diesem Beitrag übernommen wurde, aber ohne Erfolg:

Um hier wirklich zu helfen, brauchen wir mehr Details:

  • Was ist fehlgeschlagen? Wie haben Sie "keinen Erfolg" gemessen?
  • Können Sie 100% bestätigen, dass der Befehl ausgeführt wurde? Haben Sie in den Logs im Callback ausgegeben? Hast du die err Variable überprüft?
  • Wo erstellen Sie Indizes? Können Sie bestätigen, dass Sie sie nach dem Löschen nicht erneut erstellen?
  • Haben Sie den Befehl beim Auflisten bestimmter Indexnamen ausprobiert? Ehrlich gesagt, sollten Sie "*" nicht verwenden. Sie sollten sehr spezifische Indizes löschen und erstellen.
Gates VP 22.10.2012 16:38
quelle