如果 nameOnly 设置为 true,mongoDB listCollections() 返回空

Tom*_*ram 2 mongodb node.js nestjs

我正在使用 NestJS 尝试获取数据库下存在的集合列表。但是,如果我尝试使用该选项,{ nameOnly: true }我会得到一个空数组。

下面是我获取集合名称的代码:

  @Get(':client_name/listCollections')
  async collections(@Param('client_name') client_name) {
    let arrayOfCollections;
    const db = await this.databaseService.connectToDatabase(client_name);

    try {
      arrayOfCollections = await db
        .listCollections({ nameOnly: true })
        .toArray();
    } catch (error) {
      throw error;
    }
    if (arrayOfCollections) {
      return arrayOfCollections;
    }
  }
Run Code Online (Sandbox Code Playgroud)

如果我删除{ nameOnly: true },那么我会得到完整的列表,但由于这会锁定数据库并返回我不需要的额外信息,所以如果可能的话,我想避免使用它。

Tom*_*ert 5

您只需提供此选项作为方法的查询,您所需要做的就是用空查询重写它:

arrayOfCollections = await db
    .listCollections({}, { nameOnly: true })
    .toArray();
Run Code Online (Sandbox Code Playgroud)