我正在撰寫一個 bash 腳本,并希望有一個 for 回圈遍歷 mongo 中的特定集合并執行計數。如果這些特定集合中的任何一個非零,則中斷回圈。
我已經在我的腳本中初始化了這個變數(假設連接正常):
MONGO_EVAL="mongo prod $MONGO_CONN_CONF --quiet --eval"
以及特定集合的串列(在上面初始化,在腳本的早期階段):
db_collections=(collectionA collectionB collectionC....)
然后迭代一個 for 回圈并計算每個集合上的檔案。
for str in ${db_collections[@]}; do
$MONGO_EVAL 'db.$db_collections.count();'
done
我該如何以正確的方式做到這一點?
uj5u.com熱心網友回復:
應該是這樣的:
db_collections=(collectionA collectionB collectionC....)
for str in ${db_collections[@]}; do
mongo "$MONGO_CONN_CONF" --quiet --eval "db.${str}.count();"
done
或者
for str in ${db_collections[@]}; do
mongo "$MONGO_CONN_CONF" --quiet --eval "db.getCollection('${str}').count();"
done
或者
mongo "$MONGO_CONN_CONF" --quiet --eval "for (let c of ['collectionA', 'collectionB', 'collectionC']) db.getCollection(c).count();"
注意,必須使用雙引號("),否則${str}不能用變數值代替。
關于您的實際問題“如果這些特定集合中的任何一個非零,則打破回圈”如果可能是這樣的:
for (let c of ['collectionA', 'collectionB', 'collectionC']) {
let count = db.getCollection(c).count();
if (count > 0) break;
}
請記住,這個回圈實際上什么都不做,只是計數并可能退出。我假設您還需要至少一個print(c)或類似的東西。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/469184.html
上一篇:在CMD中洗掉相同大小的檔案
下一篇:在兩個常量字串之間提取WORD
