Как вывести данные поддокумента в mongodb? Всем привет.
Подскажите как можно вывести данные вложенного документа?
Например мне нужно получить продукты категории:{
"_id" : ObjectId("11b97aa654bce41356002559"),
"name" : "Test",
"images" : "test.png",
"products" : [
{
"_id" : ObjectId("00b12aa654bce41356002559"),
"name" : "Product 0",
"price" : "$1 000 000 000",
}
]
}
В Mysql я получал данные из другой таблицы вот так:$products = Products::find() -> where(['hit' => '1']) -> limit(6) -> all();
return $this -> render('index', compact('products'));
Пробовал вот так:$products = Categories::find() -> where(['products.hit' => '1']) -> limit(6) -> all();
но возвращается только категория у которой есть такой продукт, а мне нужен сам продукт.
Спасибо.

21 Авг 2019 в 06:30
331 +2
0
Ответы
1

Для того чтобы получить данные вложенного документа в MongoDB, можно воспользоваться оператором $elemMatch. Вот пример запроса, который вернет продукты категории, у которых поле "hit" равно 1:

db.collection.find({
"products": {
$elemMatch: {
"hit": 1
}
}
},
{
"products.$": 1
})

Этот запрос найдет категории, у которых хотя бы один продукт имеет "hit" равный 1, и выведет только этот продукт. Вы можете также добавить другие условия к запросу, чтобы уточнить выборку.

Надеюсь, это поможет вам получить нужные данные в MongoDB. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.

20 Апр в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир