Задать вопрос
@ascold2013

Как сделать выборку по двум полям поддокумента mongodb?

Здравствуйте! Не могу понять, почему моя выборка неверно отрабатывает.
Пишу такой запрос:
documents
    .find(
      { "routes._id": req.session.userId, token: req.session.userGroup, "routes.canSee": 'yes' },
      { document: 0 }
    )

И хочу получтить документы, в которых условие routes._Id И routes.canSee одновременно соответсвуют. Т.е у поддокумента routes c заданным _id должен быть canSee: 'yes' иначе документ не должен входить в выборку.
Но я получаю выборку, в которой документы проходят по условию ИЛИ "routes._id": req.session.userId ИЛИ "routes.canSee": 'yes'
Т.е я получаю вот такой массив документов:
[{
  ...какие то поля обьекта документа
 routes: [ { _id: '5a721c536ba3e60ae446d66c',
    role: 'Доцент',
    author: 'Шестопалов Сергей Викторович',
    canSee: 'yes',
    status: 'waiting' }]
 },
  { _id: '5a747c3d182e5a59e7f329c2', // по этому условию прошло
    role: 'Профессор',
    author: 'Кимкин Василий Викторович',
    canSee: 'no', // а по этому нет, но документ вошел в выборку
    status: 'waiting' } ]
}]

В чем проблема? С полями документа (не поддокумента) такое прокатывает - что не так с поддокументами?
  • Вопрос задан
  • 205 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы