考虑到几个集合:
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不起作用,因为它过滤掉没有旧宠物的用户,我希望用户即使没有宠物也能在那里.
实际上我也试图以同样的方式只获得每个用户中最老的宠物,我也没有找到配方.
在聚合中执行此操作的任何方法?
当然,目前我正在对返回的对象进行操作.
提前致谢.