MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Node.js - Mongoose - Controlla se esiste una raccolta

L'opzione 2 è probabilmente la più pulita. Supponendo che tu abbia una Connection Mongoose oggetto denominato conn che è stato aperto utilizzando mongoose.createConnection , puoi accedere al mongo nativo Db oggetto tramite conn.db . Da lì puoi chiamare collectionNames che dovrebbe fornire ciò che stai cercando:

conn.db.collectionNames(function (err, names) {
    // names contains an array of objects that contain the collection names
});

Puoi anche passare un nome di raccolta come parametro a collectionNames per filtrare i risultati in base a ciò che stai cercando.

Aggiornamento di Mongoose 4.x

Nella versione 2.x del driver nativo MongoDB utilizzato da Mongoose 4.x, collectionNames è stato sostituito da listCollections che accetta un filtro e restituisce un cursore, quindi lo faresti come:

mongoose.connection.db.listCollections({name: 'mycollectionname'})
    .next(function(err, collinfo) {
        if (collinfo) {
            // The collection exists
        }
    });