Mongoose 查询返回多个结果

我的数据库结构是这样的:


    {

        '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'); 

但这是返回所有公司名称(从第一个条目开始)而不是我正在寻找的单个公司名称。


白猪掌柜的
浏览 58回答 1
1回答

忽然笑

过滤将始终返回整个文档。您需要使用投影来“重塑”它。您可以考虑$ (投影)运算符:const projects = await ClientManagers.findOne({'project.contactPerson.work_email' : 'test@test.nl'} , { 'project.$': 1 });蒙戈游乐场
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript