通过在猫鼬中填充匹配结果来查找文档

Posted

技术标签:

【中文标题】通过在猫鼬中填充匹配结果来查找文档【英文标题】:Find documents by populate match result in mongoose 【发布时间】:2018-12-04 22:51:29 【问题描述】:

对于 Ecample,来自 mongoose 的数据:

数据学生

[
  "_id": ObjectId("5afbb519a7fe344ff8db67e6"),
  "name":"Jack",
  "age":20
  ...
,
  "_id": ObjectId("5afbb534a7fe344gf7db64e7"),
  "name":"Joni",
  "age":20
  ...
]

数据活动

[
  "_id": ObjectId("5afbb554a7fe344ff8db67e9"),
  "name":"Going to Market",
  "student": ObjectId("5afbb519a7fe344ff8db67e6")
  ...
,
  "_id": ObjectId("5afbb784a7fe344gf7db64e2"),
  "name":"Playing with Friends",
  "student":ObjectId("5afbb534a7fe344gf7db64e7")
  ...
]

我想根据使用正则表达式填充的条件找到一个数据库,这就是我所做的:

let term = new Regex('Jack','i');        
let result = await Activities.find()
            .populate('student', null,  name:  $regex: term  )
            .exec();

但结果总是返回 Activites 的所有数据(正则表达式查询不起作用)

我该怎么办?

【问题讨论】:

【参考方案1】:

您应该尝试使用match

let result = await Activities.find()
            .populate( path: 'student', match:  name:  $regex: term   )
            .exec();

【讨论】:

以上是关于通过在猫鼬中填充匹配结果来查找文档的主要内容,如果未能解决你的问题,请参考以下文章

如何通过填充字段在猫鼬中查找文档?

如何在猫鼬中填充另一个模型的子文档?

如何在猫鼬中异步填充嵌套对象?

如何使用猫鼬需要验证在猫鼬中插入多个文档?

如何在猫鼬中填充模型

在猫鼬中按索引查找一个