MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Node.js - Mongoose - Prüfen Sie, ob eine Sammlung vorhanden ist

Option 2 ist wahrscheinlich die sauberste. Angenommen, Sie haben eine Mongoose-Connection Objekt namens conn die mit mongoose.createConnection geöffnet wurde , können Sie auf die native mongo Db zugreifen Objekt über conn.db . Von dort aus können Sie collectionNames aufrufen die das liefern sollte, wonach Sie suchen:

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

Sie können auch einen Sammlungsnamen als Parameter an collectionNames übergeben um die Ergebnisse genau nach Ihren Wünschen zu filtern.

Mongoose 4.x-Update

In der 2.x-Version des nativen MongoDB-Treibers, den Mongoose 4.x verwendet, collectionNames wurde durch listCollections ersetzt die einen Filter akzeptiert und einen Cursor zurückgibt, also würden Sie dies tun als:

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