我有以下代码,可以很好地工作;
return await Order.find({}).populate({
path: 'items.product',
select: "title price user",
populate: {
path: 'user',
select: "_id name"
}
})是否可以在嵌套填充中添加与用户名匹配的查询,并仅显示匹配的结果,如:
return await Order.find({}).populate({
path: 'items.product',
select: "title price user",
populate: {
path: 'user',
select: "_id name",
match:{name: "name of the user"}
}
})因为此代码始终显示所有订单,即使嵌套填充的用户名不匹配也是如此。
我想要的是,如果用户名不匹配,那么它根本不应该显示任何排序结果。我不知道我是否能解释清楚。
发布于 2021-05-02 02:15:57
在执行await Order.find({}).populate({时,Mongoose首先将find发送到mongod服务器,并返回一个游标,然后传递该游标以进行填充。
然后Populate从游标中检索每个文档,并向user集合发送一个单独的find以检索匹配的文档,并迭代该游标,将检索到的文档放在原始文档中的一个数组中。
填充可以影响嵌入到原始文档中的文档,但它没有从原始结果集中删除文档的任何功能。
传递给populate的match将意味着只有匹配的用户才会添加到原始文档中,因此您应该能够使用filter消除结果中不包含用户的任何文档。
https://stackoverflow.com/questions/67348444
复制相似问题