Right now, it's not possible to use the [$in](https://docs.mongodb.com/manual/reference/operator/query/in/) operator in the [$filter](https://docs.mongodb.com/manual/reference/operator/aggregation/filter/) array aggregation operator.

Let's say this is the document schema:

```
{
    _id: 1,
    users: [
        {
            _id: 'a',
            accounts: ['x', 'y', 'z']
        },
        {
            _id: 'b',
            accounts: ['j','k','l']
        }
    ]
}

```

I want, using `aggregate`, to get the documents with filtered array of `users` based on the contents of the `accounts` array.

**IF** the `$in` would work with the `$filter` operator, I would expect it to look like this:

```
db.test.aggregate([
    {
        $project: {
            'filtered_users': {
                $filter: {
                    input: '$users',
                    as: 'user',
                    cond: {
                        $in: ['$$user.accounts', ['x']]
                    }
                }
            }
        }
    }
])

```

and return in the `filtered_users` only the first user since **x** is **in** his account.

But, as I said, this doesn't work and I get the error:

> 
> "invalid operator '$in'"
> 
> 
> 

because it isn't supported in the `$filter` operator.

Now I know I can do it with `$unwind` and using regular `$match` operators, but then it will be much longer (and uglier) aggregation with the need of using `$group` to set the results back as an array - **I don't want this**

My question is, if there is some other way to manipulate the `$filter` operator to get my desired results.