Как вывести данные поддокумента в 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
358 +1
0
Ответы
1

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

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

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

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

20 Апр 2024 в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир