jeerjmin
@jeerjmin

Как найти в mongodb по имени ключа объекта?

5b91904dda6af868616979.png
У меня есть объект sessions, куда каждый раз добавляется новое свойство-объект с именем session_id
Мне нужно найти пользователя у которого в объекте sessions есть свойство с именем session_id.
Как это сделать ?
Пытался через where, не получается.

Получается есть ли вводить string на место session_id, но как передать переменную, выдает ошибку что session_id - undefined
const {username, session_id} = user
    console.log('/load',session_id)
    let result = null;
      User.findOne({ $where: function() {
        if (this.sessions["<session_id>"]) {
          return true
        }

      } }, {username: 1, email: 1})
  • Вопрос задан
  • 543 просмотра
Пригласить эксперта
Ответы на вопрос 2
@lega
Плохое решение, так сессию не заиндексировать - а значит монга будет делать full scan коллекции, что приведет к тормозам при росте коллекции.
Как компромис - можете продублировать сессю в массив и сделать на него индекс.
Ответ написан
Комментировать
jeerjmin
@jeerjmin Автор вопроса
Сам отвечаю на вопрос, может кому пригодится.
Есть волшебное слово exists для таких случаев.

const own_name = 'sessions.' + session_id
    const query = {}
    query[own_name] = { $exists: true }

      User.find(query)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы