Пн goose запрос возвращает более одного результата - PullRequest
2 голосов
/ 05 августа 2020

Моя структура базы данных выглядит так:

    {
        '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. Итак, если work_email - test@test.com, имя компании, которое должно быть возвращено, должно быть 'a name'

Итак, запрос, который я построил с помощью mon goose, выглядит следующим образом:

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

Но это возвращает все названия компаний (из первой записи), а не ту, которую я ищу.

1 Ответ

1 голос
/ 05 августа 2020

Фильтрация всегда возвращает весь документ. Вам нужно использовать проекцию, чтобы «изменить» его. Вы можете рассмотреть оператор $ (проекция) :

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

Пн go Детская площадка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...