我想從mongo數據庫中獲取集合名稱列表。 所以,我在shell腳本使用以下命令:如何從shell腳本中獲取mongo數據庫集合的確切列表
集合= mongo $dbName --eval "db.getCollectionNames()"
此命令的輸出結果是
「的MongoDB外殼版本:2.2.0連接:cm_v2 COL1,COL2, col3,col4「
我想只得到集合名稱,例如:col,col2,col3,col4。 那麼,我應該如何從結果中刪除類似版本的輸出。
我想從mongo數據庫中獲取集合名稱列表。 所以,我在shell腳本使用以下命令:如何從shell腳本中獲取mongo數據庫集合的確切列表
集合= mongo $dbName --eval "db.getCollectionNames()"
此命令的輸出結果是
「的MongoDB外殼版本: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
達沃爾盧奇克的answer批量版本:
for /f "tokens=* usebackq" %%c in (
`echo show collections ^| mongo "host:port/dbname" --quiet`
) do (
echo %%c
)
感謝您的解決方案:) –