Я хотел бы предложить вам изменить структуру данных с
"curl_detail": {
"Curl1": {
"key1": "value1",
"key2": "value2"
},
"Curl2": {
"key1": "value1",
"key2": "value2"
}
}
на
"curl_detail": [{
"key1": "value1",
"key2": "value2"
},
{
"key1": "value1",
"key2": "value2"
}
]
Хранение структуры данных в массиве позволит вам легче находить некоторые данные. Также нет необходимости иметь объект со свойствами, такими как Curl1
, Curl2
et c.
Для новой структуры данных уже есть некоторые ответы с объяснением:
1) Пн go найти значение с неизвестным родительским ключом
2) Запрос MongoDB по значению, когда родительский ключ неизвестен
3) MongoDB: Найти документ с заданными значениями полей в объекте с неизвестным ключом
ОБНОВЛЕНИЕ
Если нет возможности изменить структуру данных, см. Это решение ( трюк с использованием $arrayToObject
/ $objectToArray
для определения имени вложенного ключа, например, "Curl1"):
db.collection.aggregate([{
$addFields: {
curl_detail: {
$arrayToObject: {
$map: {
input: {
$objectToArray: "$curl_detail"
},
as: "details",
in: {
k: "$$details.k",
v: {
key1: "$$details.v.key1"
}
}
}
}
}
}
},
{
$project: {
_id: 0,
curl_detail: 1
}
}
])
Это выводит следующее:
[
{
"curl_detail": {
"Curl1": {
"key1": "value1"
},
"Curl2": {
"key1": "value1"
},
"Curl3": {
"key1": "value1"
},
"Curl4": {
"key1": "value1"
}
}
}
]
Вы можете проверить это через пн go площадка