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

Как получить записей содержащих нужное значение в массиве?

Есть коллекция с данными вида:

{
    _id: ObjectId('6943d11b18090e12e90dba1e'),
    type: 'user',
    groups: {
      '0': '1ed9c8d6-aab1-67aa-9f37-1d6076c03cf9',
      '1': '1ed9c8d6-aab3-6988-afc8-1d6076c03cf9',
      '2': '1ed9c8d6-aab4-605e-90c4-1d6076c03cf9'
    },
    ip: '105.105.105.105',
    userId: '5a52d7c8-7690-4770-b482-0324a37951af',
    login: 'login',
    fio: 'ФИО',
    createdAt: ISODate('2025-08-14T16:46:40.000Z')
  }


Пытаюсь написать консольный запрос вида


db.user_logs.find({ groups: "1ed9c8d6-aab4-605e-90c4-1d6076c03cf9"});


Чтобы получить все записи, которые в groups имеют 1ed9c8d6-aab4-605e-90c4-1d6076c03cf9 но перебираю различные варианты из гугла уже пол часа с нулевым эффектом.

На уровне ORM поле groups указано так:

#[ODM\Field(type: 'hash', nullable: false)]
private array $groups = [];
  • Вопрос задан
  • 45 просмотров
Подписаться 1 Простой 3 комментария
Помогут разобраться в теме Все курсы
  • Merion Academy
    MongoDB для разработчиков и DevOps
    4 месяца
    Далее
  • Skillbox
    Курс Java-разработчик
    4 месяца
    Далее
  • Яндекс Практикум
    Фулстек-разработчик
    16 месяцев
    Далее
Решения вопроса 1
@HellWalk Автор вопроса
Оказалось, что нужно переделать тип поля с:


#[ODM\Field(type: 'hash', nullable: false)]
private array $groups = [];


На:


#[ODM\Field(type: 'collection', nullable: false)]
private array $groups = [];


И все заработало.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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