Mongo DB — использовать значение из свойства в качестве ключа во втором свойстве в запросе

#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