node.js - Mongoose populate() 返回填充文档的 '_id' 字段,值为 "new ObjectId()"

标签 node.js mongodb express mongoose mongoose-populate

因此,我尝试获取与特定用户相对应的一组公司成员文档,并填充流程中每个文档的公司字段。这里的目的是获取与公司成员对应的每个公司文档的 _idname 字段。我已成功获取公司成员文档,但是,每个填充公司的 _id 字段与“new ObjectId()”构造函数一起返回如下图:

The company members:  [
  {
    company: { _id: new ObjectId("6296180fj2a538be87f058f"), name: 'aaa' }
  }
]

当然,期望的结果是仅获取_id内容,而不使用ObjectId()构造函数。我尝试使用 this StackOverflow post 接受的答案中建议的方法,但是,我得到了相同的结果(意味着 ObjectId() 构造函数没有消失):

// Fetch up to 10 company members and populate their companies.
let companyMembers = await CompanyMember.find({user: user_id}, {_id: 0, company: 1}).populate({
   path: 'company',
   match: { name: { $regex : new RegExp(company_name, "i") } },
   select: { _id: {"$toString": "$_id"}, name: 1 }
}).limit(10).exec();

最佳答案

您尝试过clean()函数吗?

关于node.js - Mongoose populate() 返回填充文档的 '_id' 字段,值为 "new ObjectId()",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72451420/

相关文章:

node.js - Azure Web APP 上的 MongoDB

javascript - 使用 node.js 驱动程序将 Mongo 集合导出到 json

java - MongoDB 身份验证失败

node.js - Mongoose + Express - 在文档中保存用户的正确方法是什么(审核信息)

javascript - 提取现有 javascript 文件中数组的值

node.js - 在 node.js 中设置 mssql-session-store

javascript - 在 Express Router (node.js) 中使用 for 循环

javascript - Socket.io Chat 应用程序显示检测到 EventEmitter 内存泄漏。添加了 11 个听众。使用 emitter.setMaxListeners()

node.js - ld : unsupported tapi file type '!tapi-tbd' in YAML file

node.js - Mongoose - 检查 `upsert` 是否创建了新文档