mongodb本机驱动程序获取没有数据库名称的集合名称

时间:2014-05-17 06:45:49

标签: javascript node.js mongodb node-mongodb-native

如何从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

2 个答案:

答案 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(/^([^.]*)./,"");
    })
  );

});

这将删除第一个.的数据库前缀。以防您实际上拥有其中包含.的集合名称。