如何在地形中从局部地图中删除键值对



我有一个如下的本地值,我想从中删除Mongo-S对,因为它没有dbv值

merged_mongo_locals = {
MongoA-0 = {
az           = "ap-south-1a"
dbv          = 50
service_name = "MongoA"
}
MongoC-0 = {
az           = "ap-south-1a"
dbv          = 50
service_name = "MongoC"
}
MongoC-1 = {
az           = "ap-south-1b"
dbv          = 50
service_name = "MongoC"
}
MongoD-0 = {
az           = "ap-south-1a"
dbv          = 100
service_name = "MongoD"
}
MongoD-1 = {
az           = "ap-south-1b"
dbv          = 100
service_name = "MongoD"
}
MongoD-2 = {
az           = "ap-south-1c"
dbv          = 100
service_name = "MongoD"
}
MongoM-0 = {
az           = "ap-south-1a"
dbv          = 50
service_name = "MongoM"
}
MongoS-0 = {
az           = "ap-south-1a"
service_name = "MongoS"
}
MongoS-1 = {
az           = "ap-south-1b"
service_name = "MongoS"
}
}

我正在使用以下方法删除MongoS密钥对

输出";Mongo-ips;{value={对于local.merged_mongo_locals:k=>v if!contains(values(v(,"dbv"(}}

但是输出如下,它没有排除MongoS对,即使它没有dbv值

Changes to Outputs:
+ Mongo-ips = {
+ MongoA-0 = {
+ az           = "ap-south-1a"
+ dbv          = 50
+ service_name = "MongoA"
}
+ MongoC-0 = {
+ az           = "ap-south-1a"
+ dbv          = 50
+ service_name = "MongoC"
}
+ MongoC-1 = {
+ az           = "ap-south-1b"
+ dbv          = 50
+ service_name = "MongoC"
}
+ MongoD-0 = {
+ az           = "ap-south-1a"
+ dbv          = 100
+ service_name = "MongoD"
}
+ MongoD-1 = {
+ az           = "ap-south-1b"
+ dbv          = 100
+ service_name = "MongoD"
}
+ MongoD-2 = {
+ az           = "ap-south-1c"
+ dbv          = 100
+ service_name = "MongoD"
}
+ MongoM-0 = {
+ az           = "ap-south-1a"
+ dbv          = 50
+ service_name = "MongoM"
}
+ MongoS-0 = {
+ az           = "ap-south-1a"
+ service_name = "MongoS"
}
+ MongoS-1 = {
+ az           = "ap-south-1b"
+ service_name = "MongoS"
}
}

请指导我这里出了什么问题

这应该会对您有所帮助。

output "Mongo-ips" {
value = { for k, v in local.merged_mongo_locals : k => v if contains(keys(v), "dbv") }
}

最新更新