Mongodb:此地图集层中不允许使用 $filter

Don*_*al0 2 mongoose mongodb node.js

我运行一个查询,通过聚合返回一组用户。为了不返回执行查询的用户的文档,我在他的 id 上添加了一个 $filter。但我收到以下错误:

此地图集层中不允许使用 $filter。

我连接到一个免费的 MongoAtlas 集群。这是我的代码。

 User.aggregate([
        { $filter: { _id: { $eq: id } } },
        {
          $match: {
            jobs: { $in: jobs },
           age: { $gte: minAge, $lte: maxAge },
          },
        },
      ]).exec((_, data) => res.json({ data }));
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

tha*_*.ts 5

$filter不是管道阶段,它用于过滤数组表达式。你可以把你想要过滤的东西放在$match舞台上。

 User.aggregate([
        {
          $match: {
            _id: id,
            jobs: { $in: jobs },
            age: { $gte: minAge, $lte: maxAge },
          },
        },
      ]).exec((_, data) => res.json({ data }));
Run Code Online (Sandbox Code Playgroud)