0

我想过滤 mongodb 中的一些集合以导出。但是字符串比较似乎不正确。

$1在我的情况下是localhost:17017/mydb

shop是mongodb中的集合之一,但$i == 'shop'从未成功。

#!/bin/bash

colls=`mongo $1 --eval 'db.getCollectionNames();' | tail -1`

IFS=',' read -ra ADDR <<< $colls

for i in "${ADDR[@]}"
do
    if [[ $i == 'shop' ]]
    then
        echo $i
    fi
done

或者有没有其他方法可以从 mongodb 导出指定的集合?

4

1 回答 1

1

尝试回显你得到的值,看看你应该如何实际使用这些模式。另请正确引用您的变量。最好使用 $() 而不是反引号:

#!/bin/bash

colls=$(mongo "$1" --eval 'db.getCollectionNames();' | tail -1)
echo "colls: $colls"

IFS=',' read -ra ADDR <<< "$colls"
echo "colls count: ${#ADDR[@]}"

for i in "${ADDR[@]}"
do
    echo "Trying |$i|."
    if [[ $i == 'shop' ]]
    then
        echo "$i"
    fi
done
于 2013-08-14T04:58:04.677 回答