sql >> Databasteknik >  >> NoSQL >> MongoDB

Kontrollera om ett index finns i mongodb

Att skapa index i MongoDB är en idempotent operation. Så kör db.names.createIndex({name:1}) skulle skapa indexet bara om det inte redan fanns.

Det utfasade (från MongoDB 3.0) alias för createIndex() är ensureIndex() vilket är lite tydligare på vad createIndex() faktiskt gör det.

Redigera: Tack till ZitRo för att du i kommentarerna klargjorde att anropet createIndex() med samma namn men andra alternativ än ett befintligt index kommer att ge ett felmeddelande MongoError: Index with name: **indexName** already exists with different options som förklaras i denna fråga.

Om du har andra skäl att kontrollera kan du komma åt aktuella indexdata på ett av två sätt:

  1. Från och med v3.0 kan vi använda db.names.getIndexes() där names är namnet på samlingen. Dokument här.
  2. Före v3.0 kan du komma åt system.indexes samla in och gör en find som bri beskriver nedan.


  1. hur man grupperar i mongoDB och returnerar alla fält i resultat

  2. Hur man organiserar många till många-relationer i MongoDB

  3. Om jag har ett mongo-dokument-id som en sträng, hur frågar jag efter det som ett _id?

  4. Hur kan jag ställa in MongoDB på en Node.js-server med node-mongodb-native i en EC2-miljö?