【问题标题】:How to get exact list of collections form mongo database in shell script如何在 shell 脚本中从 mongo 数据库中获取准确的集合列表
【发布时间】:2014-01-10 07:45:49
【问题描述】:

我想从 mongo 数据库中获取集合名称列表。 因此,我在 shell 脚本中使用以下命令:

collections=mongo $dbName --eval "db.getCollectionNames()"

这条命令的输出结果是

"MongoDB shell 版本:2.2.0 连接到:cm_v2 col1,col2,col3,col4"

我只想获取集合名称,例如:col、col2、col3、col4。 那么,我应该如何从结果中删除类似版本的输出。

【问题讨论】:

    标签: linux mongodb shell sh


    【解决方案1】:

    如果你想获得一个可以迭代的集合数组,可以使用类似这样的东西(如果集合名称中有空格,这可能会咬你):

    collections=`echo "show collections" | mongo $dbName --quiet`
    
    
    for collection in $collections;
    do 
        echo "$collection"
    done
    

    这将返回一个带引号的 JSON 格式的名称列表,这对于 BASH 脚本并不是很有用

    mongo $dbName --quiet --eval "db.getCollectionNames()"
    
    [
        "collection1",
        "collection2"
    ]
    

    【讨论】:

      【解决方案2】:

      使用--quiet 标志

      collections=mongo $dbName --quiet --eval "db.getCollectionNames()"
      

      【讨论】:

        【解决方案3】:

        在下面使用:

        DATABASE_COLLECTIONS=$(mongo $dbName --quiet --eval "db.getCollectionNames().join('')" | sed 's/,/ /g')
        

        那你就可以了

        for col in $DATABASE_COLLECTIONS; do
            echo $col
        done
        

        【讨论】:

          【解决方案4】:

          Davor Lucicanswer的批量版:

          for /f "tokens=* usebackq" %%c in (
            `echo show collections ^| mongo "host:port/dbname" --quiet`
          ) do (
            echo %%c
          )
          

          【讨论】:

            猜你喜欢
            • 2015-08-08
            • 2017-10-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-10-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多