1

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

长版:

我想创建一个应用程序,允许用户使用 mongo + mongoose + node.js 基本上创建自己的架构 > 集合 > 文档。

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

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

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

那么,有人知道如何在不知道他们的名字的情况下获取收藏列表吗?

4

3 回答 3

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)
    }
});

返回的 Objectmongoose.connect()没有类似于collectionNames()我能找到的方法。

于 2011-07-31T16:44:55.750 回答
0

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

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

于 2011-07-31T15:18:00.300 回答
0

试试这个:

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

});
于 2014-07-13T16:15:29.657 回答