如何从nodeJS的mongodb本机驱动程序中获取没有数据库名称的集合名称?
db.collectionNames(function(err, collections) {
if (err) {
log.error(err);
} else {
log.info(collections);
}
});
此代码返回如下内容:
databaseName.collection1,databaseName.collection2,databaseName.collection3
但我想得到名字:collection1, collection2, collection3
答案 0 :(得分:13)
使用MongoDB 2.0.0及更高版本的驱动程序,你可以need to use listCollections()
,如
db.listCollections().toArray(function(err, collections){
//collections = [{"name": "coll1"}, {"name": "coll2"}]
});
答案 1 :(得分:3)
响应的确切结构是一个带有"名称"的子文档。数组中的键:
[
{ name: 'test.cursors' },
{ name: 'test.episodes' },
{ name: 'test.zips' },
{ name: 'test.scripts' }
]
因此,只需将map
与正则表达式replace
:
db.collectionNames(function(err, collections) {
console.log(
collections.map(function(x) {
return x.name.replace(/^([^.]*)./,"");
})
);
});
这将删除第一个.
的数据库前缀。以防您实际上拥有其中包含.
的集合名称。