Как назначить динамический ключ на $ match aggregate mongodb?

#javascript #node.js #mongodb #aggregation-framework #aggregate

#javascript #node.js #mongodb #агрегация-фреймворк #агрегат

Вопрос:

Я хочу назначить ключ $ match динамически в соответствии с моим условием, которое я привел ниже:

 let memberField = filter == "Agent" ? "user" : "admin";  // memberField = "user"
  
db.aggregate(
            [
              {
                $match: {
                  memberField: "12345"
                }
              }
            ]
          )
  

Здесь я не получаю пустой ответ.

Но если я передам жесткий ключ в $ match, как указано ниже:

 db.aggregate(
        [
          {
            $match: {
              user: "12345"
            }
          }
        ]
      )
  

Здесь я получаю соответствующий результат.

Итак, как передать динамический ключ?

Ответ №1:

Взгляните на Computed property names .

 db.aggregate([
  {
    $match: {
      [memberField]: "12345"
    }
  }
])
  

Комментарии:

1. @harshadkapei Проблем нет. Если это решит вашу проблему, пожалуйста, примите ответ, нажав на галочку, нужно получить эти интернет-баллы! 🙂

2. Если этот вопрос полезен сообществу разработчиков, пожалуйста, примите вопрос, нажав стрелку вверх.