如何在$ match聚合mongodb上分配动态密钥?

问题描述

我想根据我在下面给出的条件动态分配$ match的键:

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

在这里我没有得到空的回应。

但是,如果我将硬键传递给$ match,如下所示:

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

在这里得到相应的结果。

那么如何传递动态密钥?

解决方法

看看Computed property names

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