harshadkapei
harshadkapei

Reputation: 23

How to assign dynamic key on $match aggregate mongodb?

I want to assign key of $match dynamically as per my condition which I have given below:

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

Here I'm not getting empty response.

But if I pass hardcode key to $match like given below:

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

Here I'm getting respective result.

So how do pass dynamic key?

Upvotes: 0

Views: 156

Answers (1)

Jiří Pospíšil
Jiří Pospíšil

Reputation: 14402

Have a look at Computed property names.

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

Upvotes: 1

Related Questions