首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >嵌套填充筛选器为MongoDB

嵌套填充筛选器为MongoDB
EN

Stack Overflow用户
提问于 2021-05-02 00:24:37
回答 1查看 28关注 0票数 0

我有以下代码,可以很好地工作;

代码语言:javascript
复制
return await Order.find({}).populate({
  path: 'items.product',
  select: "title price user",
  populate: {
    path: 'user',
    select: "_id name"
  }
})

是否可以在嵌套填充中添加与用户名匹配的查询,并仅显示匹配的结果,如:

代码语言:javascript
复制
return await Order.find({}).populate({
  path: 'items.product',
  select: "title price user",
  populate: {
    path: 'user',
    select: "_id name",
    match:{name: "name of the user"}
  }
})

因为此代码始终显示所有订单,即使嵌套填充的用户名不匹配也是如此。

我想要的是,如果用户名不匹配,那么它根本不应该显示任何排序结果。我不知道我是否能解释清楚。

EN

回答 1

Stack Overflow用户

发布于 2021-05-02 02:15:57

在执行await Order.find({}).populate({时,Mongoose首先将find发送到mongod服务器,并返回一个游标,然后传递该游标以进行填充。

然后Populate从游标中检索每个文档,并向user集合发送一个单独的find以检索匹配的文档,并迭代该游标,将检索到的文档放在原始文档中的一个数组中。

填充可以影响嵌入到原始文档中的文档,但它没有从原始结果集中删除文档的任何功能。

传递给populate的match将意味着只有匹配的用户才会添加到原始文档中,因此您应该能够使用filter消除结果中不包含用户的任何文档。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67348444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档