【问题标题】: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 的所有数据(正则表达式查询不起作用)

我该怎么办?

【问题讨论】:

    标签: node.js mongodb express mongoose mongoose-populate


    【解决方案1】:

    您应该尝试使用match

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

    【讨论】:

      猜你喜欢
      • 2019-07-17
      • 2022-12-10
      • 2021-02-11
      • 2021-10-07
      • 2014-01-08
      • 2020-01-21
      • 2015-09-30
      • 1970-01-01
      • 2015-08-26
      相关资源
      最近更新 更多