小编Gab*_*iel的帖子

MongoDb:聚合$ lookup,过滤外部文档

考虑到几个集合:

1.-用户

{
  name: ...
  id: ...
  city: ...
  age: ...
  otherdata: ...
}
Run Code Online (Sandbox Code Playgroud)

2.- PETS

{
  name: ...
  owner: ...
  type: ...
  age: ...
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用$ lookup聚合来构建一组代表用户及其宠物的对象:

collectionusers.aggregate([
   {
     $lookup: {
       from: "pets",
       localField: "id",
       foreignField: "owner",
       as: "pets"
     }
   }
]);
Run Code Online (Sandbox Code Playgroud)

但是我想添加一个过滤器,以便只为每个用户添加1年以上的宠物(使用宠物对象内的年龄).

问题是,在聚合中添加$ match不起作用,因为它过滤掉没有旧宠物的用户,我希望用户即使没有宠物也能在那里.

实际上我也试图以同样的方式只获得每个用户中最老的宠物,我也没有找到配方.

在聚合中执行此操作的任何方法?

当然,目前我正在对返回的对象进行操作.

提前致谢.

mongodb mongodb-query aggregation-framework

13
推荐指数
1
解决办法
1万
查看次数