В последние дни я делал скрипт для создания коллекции (с этим командлетом https://github.com/nightroman/Mdbc) и пользователя базы данных и роли с mon go atlas api через powershell. Скрипт работает нормально, но я не смог создать элемент управления, чтобы проверить, существует ли уже коллекция (я могу проверить среду на csv, чтобы создать объект в правильной среде). Так, например, если я запускаю скрипт для создания в одной среде двух ролей в одной коллекции, я получаю сообщение об ошибке, что коллекция существует:
Как я могу сделать элемент управления для проверки во всех средах и пропустить создание коллекции, если она существует? Вот этот код:
$filepath = "namecsv.csv"
$listas = Import-CSV $filepath -delimiter ";"
foreach ($lista in $listas) {
$db = $lista.db
$collection = $lista.collection
$rolename = $lista.roleName
#dev
if ($rolename -imatch '_DV_' ) {
Connect-Mdbc -ConnectionString "mongodb+srv://username:password@onnectionstring"
$dbc = Get-MdbcDatabase -Name $db
Add-MdbcCollection -Name $collection -Database $dbc
Write-Host "Collection $collection creata sul db $db di dev" -ForegroundColor Green
}
#test
if ($rolename -imatch '_TS_') {
Connect-Mdbc -ConnectionString "mongodb+srv://username:password@onnectionstring"
$dbc = Get-MdbcDatabase -Name $db
Add-MdbcCollection -Name $collection -Database $dbc
Write-Host "Collection $collection creata sul db $db di test" -ForegroundColor Green
}
#uat
if ($rolename -imatch '_UT_') {
Connect-Mdbc -ConnectionString "mongodb+srv://username:password@onnectionstring"
$dbc = Get-MdbcDatabase -Name $db
Add-MdbcCollection -Name $collection -Database $dbc
Write-Host "Collection $collection creata sul db $db di uat" -ForegroundColor Green
}
#prod
if ($rolename -imatch '_PR_') {
Connect-Mdbc -ConnectionString "mongodb+srv://username:password@onnectionstring"
$dbc = Get-MdbcDatabase -Name $db
Add-MdbcCollection -Name $collection -Database $dbc
Write-Host "Collection $collection creata sul db $db di prod" -ForegroundColor Green
}
}
Вот как структурирован CSV:
db collection roleName
dbname collection1 GROUPNAME_DV_RW
dbname collection1 GROUPNAME_DV_RO
Если может помочь, вот что я получаю с помощью команды cmdlet get-mdb c collection:
Get-MdbcCollection
Спасибо за вашу помощь.