taral
@taral
php программист

Получить список значений с поля массива

Покажу на примере потому что заглавие вышло не удачное. Работаем с базой MongoDB. Вот таблица.
{
    "numbers": {
        "0": "10",
        "1": "11",
        "2": "12"
    },
    "type": "1",
    "otherBigVal":"очень много текста..."
},
{
    "numbers": {
        "0": "1",
        "1": "2",
        "2": "11",
        "3": "10"
    },
    "type": "1",
    "otherBigVal":"очень много текста..."
},
{
    "numbers": {
        "0": "18",
        "1": "14",
    },
    "type": "2",
    "otherBigVal":"очень много текста..."
}

Необходимо выбрать все numbers где type==«1» и обьеденить значения с numbers. В результате мы должны поучить вот это [10,11,12,1,2]
Причем в базе записей очень много. Потому важно максимально оптимизировать выполнение задачи.
Пока решение придумал такое.
Делаем запрос {type:«1»}
Потом в PHP проходим циклом и объединяем массивы.
Но во первых мы с базы вытягиваем все поля хотя нам нужно только numbers. Во вторых мы лишний раз проходим их в коде.
При большом количестве данных это печально. Подскажите как можно улучшить оптимизацию.
  • Вопрос задан
  • 3321 просмотр
Пригласить эксперта
Ответы на вопрос 1
7workers
@7workers
вот в эту стороно смотрите (пример не проверял): docs.mongodb.org/manual/core/aggregation/

db.collectionFoo.aggregate(
{
{ $match: {type:«1»} },
{ $project: {numbers:1} },
{ $unwind: «numbers» },

}
);
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽