为了账号安全,请及时绑定邮箱和手机立即绑定

Mongoose 查询返回多个结果

Mongoose 查询返回多个结果

白猪掌柜的 2022-12-22 12:56:16
我的数据库结构是这样的:    {        'name' : 'entry one'        'project' :             [                {companyName : 'a name', contactPerson : [{ work_email: 'test@test.com'}] } ,                 {companyName : 'a name1', contactPerson : [{ work_email: 'test1@test.com'}] } ,                 {companyName : 'a name2', contactPerson : [{ work_email: 'test2@test.com'}] }             ]    }    {        'name' : 'entry 2'        'project' :             [                {companyName : 'another name', contactPerson : [{ work_email: 'testing@test.com'}] } ,                 {companyName : 'another name1', contactPerson : [{ work_email: 'testing1@test.com'}] } ,                 {companyName : 'another name 2', contactPerson : [{ work_email: 'testing2@test.com'}] }             ]    }我想要的是找到属于给定工作电子邮件的公司名称。所以如果 work_email 是test@test.com应该返回的公司名称应该是'a name'所以我用猫鼬构建的查询是这样的:const projects = await ClientManagers.findOne({'project.contactPerson.work_email' : 'test@test.nl'} , 'project.companyName'); 但这是返回所有公司名称(从第一个条目开始)而不是我正在寻找的单个公司名称。
查看完整描述

1 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

过滤将始终返回整个文档。您需要使用投影来“重塑”它。您可以考虑$ (投影)运算符

const projects = await ClientManagers.findOne({'project.contactPerson.work_email' : 'test@test.nl'} , { 'project.$': 1 });

蒙戈游乐场


查看完整回答
反对 回复 2022-12-22
  • 1 回答
  • 0 关注
  • 48 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信