在不知道架构/集合名称的情况下获取Mongoose Schema和Documents?

时间:2011-07-30 18:29:23

标签: mongodb node.js mongoose

简短版本:我基本上想要在mongoose的mongo shell中做show collections所做的事。

长版:

我想创建一个允许用户基本上创建自己的Schema>的应用程序。收藏品>使用mongo + mongoose + node.js。

的文档

此应用程序的第一步是显示以前创建的集合及其文档。但由于这些将由用户创建,因此他们的名字不为人所知。 我发现最接近的代码是:

function find (collec, query, callback) {
    mongoose.connection.db.collection(collec, function (err, collection) {
    collection.find(query).toArray(callback);
    });
}

但我不知道该集合的名称是什么,因此我无法传递'collec'参数。

那么,有人知道如何在不知道名字的情况下获取馆藏清单吗?

3 个答案:

答案 0 :(得分:2)

我最终使用node-mongodb-native(mongoose在其上工作的mongo驱动程序)来获取集合名称:

var nmn_connect = require('mongoose/node_modules/mongodb').connect;

nmn_connect('mongo://localhost:27017/DATABASE', function(err, db) {
    if(!err){
        db.collectionNames(function(err, names){ // what I was looking for
            if(!err){
                console.log(names);
                db.close();
            }else{
                console.log(err);
                db.close();
            }
        });     
    }else{
        console.log(err)
    }
});

mongoose.connect()返回的对象没有类似于我可以找到的collectionNames()的方法。

答案 1 :(得分:0)

我对mongoose一无所知,但此页面建议您可以使用mongoose.connection.collections访问所有集合:http://mongoosejs.com/docs/api.html

每个集合都应该有一个名称属性。

答案 2 :(得分:0)

试试这个:

mongoose.connection.db.collectionNames(function (err, names) {

});