wake-up-neo.com

Der Versuch, eine Liste der Sammlungen von Mungo zu erhalten

Ich versuche, eine Liste von DBS-Sammlungen mit Mungo zurückzugeben. Ich befolge die hier aufgeführten Anweisungen, aber http://grokbase.com/t/gg/mongoose-orm/122xxxr7qy/mongoose-get-a-list-of-all-collections . Also hier ist mein Code 

var mongoose = require('mongoose');
    //if (mongoose.connection.readyState == 0){//checks if already connected to the database
    console.log("creating connection to the database");
    var Config = require('../configs/config');
    var config = new Config();
    config = config.getConfig().db.dev;

    if (mongoose.connection.readyState = 0 ) {
    mongoose.connect("mongodb://austin:[email protected]:10023/test1");
    console.log('mongoose readyState is ' + mongoose.connection.readyState);
    }
    var collection;

    mongoose.connection.on('open', function (ref) {
        console.log('Connected to mongo server.');
    });

    //trying to get collection names
    mongoose.connection.db.collectionNames(function (err, names) {
        console.log(names); // [{ name: 'dbname.myCollection' }]
        module.exports.Collection = names;
    });

das einzige Problem ist, dass Namen als undefiniert zurückgegeben werden. Ist es sogar möglich, eine Liste von Sammlungen nur mit Vanille-Mungo zurückzugeben?

13
Austin Davis

Versuchen Sie, die Funktion Sammlungsnamen nach der Verbindung auszuführen.

mongoose.connection.on('open', function (ref) {
    console.log('Connected to mongo server.');
    //trying to get collection names
    mongoose.connection.db.collectionNames(function (err, names) {
        console.log(names); // [{ name: 'dbname.myCollection' }]
        module.exports.Collection = names;
    });
})
3
Charlie Key

Ich bin gerade auf diese Antwort gestoßen und obwohl sie zu dem Zeitpunkt, als sie scheint, funktioniert hat, wurde collectionNames aus den verfügbaren Funktionsnamen zu Gunsten von listCollections entfernt.

Dieser andere Stapelüberlaufposten hat ein Funktionsbeispiel: https://stackoverflow.com/a/29461274/4127352

Hier ist der Link zu den Originaldokumenten: http://mongodb.github.io/node-mongodb-native/2.0/meta/changes-fr-1.0/

41
Squivo

So habe ich es geschafft, alle Namen der verbundenen Datenbank zu erhalten.

var mongoose = require('mongoose');
var collections = mongoose.connections[0].collections;
var names = [];

Object.keys(collections).forEach(function(k) {
    names.Push(k);
});

console.log(names);

Diese Lösung funktioniert gut auf moose. 4.4.19 .

4
Roger

Wenn Sie nur mit Mongoose-Modellen arbeiten, brauchen Sie nur Folgendes:

const connection = mongoose.connection;
Object.keys(connection.models).forEach((collection) => {
  // You can get the string name.
  console.info(collection);
  // Or you can do something else with the model.
  connection.models[collection].remove({});
});
0
zurfyx