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

Posted

技术标签:

【中文标题】mongodb本机驱动程序获取没有数据库名称的集合名称【英文标题】:mongodb native driver get collection names without database name 【发布时间】:2014-07-05 16:24:53 【问题描述】:

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

【问题讨论】:

【参考方案1】:

使用 MongoDB 2.0.0 驱动程序及更高版本,您将need to use listCollections(),如

db.listCollections().toArray(function(err, collections)
    //collections = ["name": "coll1", "name": "coll2"]
);

【讨论】:

【参考方案2】:

响应的确切结构是一个带有数组中“name”键的子文档:

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

);

这将删除所有内容,直到第一个 . 是数据库前缀。以防万一您的集合名称中包含 .

【讨论】:

谢谢!太好了!

以上是关于mongodb本机驱动程序获取没有数据库名称的集合名称的主要内容,如果未能解决你的问题,请参考以下文章

如何在 mongoDB 的集合数组中获取字段名称?

4.Mongodb数据查询2

MongoDb 模拟 2 个集合之间的连接

MongoDB 集合连字符名称

如何获取 MongoDB 属性的最后一个值?

有没有办法防止 MongoDB 向集合名称添加复数形式?