#mongodb #nosql
#mongodb #nosql
Вопрос:
В Mongo у меня есть документ:
{
'option': 'b',
'a' : 'abc'
'b': 'qaz'
'c': 'wsx'
}
Я хочу создать запрос, чтобы получить значение элемента с ключом, таким же, как значение элемента ‘option’, поэтому результат будет:
{
'result': 'qaz'
}
Как я могу создать запрос агрегации в Mongo, чтобы получить этот результат?
Ответ №1:
Это может помочь вам
db.collection.aggregate([
{
$project: {
data: { "$objectToArray": "$ROOT" },
option: "$option"
}
},
{
"$project": {
data: {
$filter: {
input: "$data",
cond: { $eq: ["$this.k","$option"] }
}
}
}
},
{
$project: {
result: {
"$arrayElemAt": [ "$data", 0 ]
}
}
},
{
$project: {
result: "$result.v"
}
}
])
Рабочая игровая площадка Mongo