node.js - 通过在 mongoose 中填充匹配结果来查找文档

标签 node.js mongodb express mongoose mongoose-populate

对于 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的所有数据(正则表达式查询不起作用)

我应该做什么?

最佳答案

您应该尝试使用match

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

关于node.js - 通过在 mongoose 中填充匹配结果来查找文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51039114/

相关文章:

javascript - NodeJS 未处理的 promise 拒绝问题

mongodb - 如何将 BSON 时间戳从 Mongo 变更流转换为日期?

c# - MongoDB c# 驱动程序 : How to set SetIgnoreIfDefault for all members in a class

javascript - 用 multer (nodeJs) 上传文件不起作用

node.js - 我们可以使用单核处理器使用 Node.js 集群吗?

javascript - Node.JS环境变量没有设置?

java - 如何将 SSL 证书添加到 Bluemix java Cloud Foundry 应用程序?

javascript - 使用 passportjs 完成本地用户身份验证后,将 Twitter 帐户与 Passportjs 关联起来

javascript - NodeJS Express 多异步已完成

node.js - 为什么 Mongoose 需要 schema,而 Mongodb 本身没有 schema?