簡體   English   中英

如何在shell腳本中獲取mongo數據庫的確切集合列表

[英]How to get exact list of collections form mongo database in shell script

我想從mongo數據庫獲取集合名稱列表。 因此,我在shell腳本中使用以下命令:

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

該命令的輸出結果是

“ MongoDB Shell版本:2.2.0連接到:cm_v2 col1,col2,col3,col4”

我只想獲取集合名稱,例如:col,col2,col3,col4。 因此,如何從結果中刪除類似版本的輸出。

使用--quiet標志

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

如果要獲取一個集合數組,可以使用以下類似的方法進行迭代(如果集合名稱中有空格,則可能會傷到你):

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"
]

在下面使用:

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

那么你也能

for col in $DATABASE_COLLECTIONS; do
    echo $col
done

批處理版本的Davor Lucic答案

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM