简短版本:我基本上想要在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'参数。
那么,有人知道如何在不知道名字的情况下获取馆藏清单吗?
答案 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) {
});