Как изменить значение массива ответов на запрос с помощью MongoDB и PHP?

user3663481

Я новичок в MongoDB. Я создал запрос в mongoDB с помощью php. Используя запрос следующим образом

$date_start = new MongoDate(strtotime("2016-06-08T18:30:00.000Z"));
$default_date = new MongoDate(strtotime("1970-01-01T00:00:00.000Z"));
$pipeline = array(    
array('$project' => array(
        'MainsPower' => 1,
        'EventTS' => 1
        )
),
 array('$unwind' => array(
    'path' => '$MainsPower',
    'includeArrayIndex' => "arrayIndex",
    'preserveNullAndEmptyArrays' => true
        )
),
array('$match' => array(
            '$and' => array(
                //array('EventTS' => array('$gt' => $date_start)),
                //array('PanelID' => 'A00911'),
                array("MainsPower" => array('$ne' => null))
            )
        )
),
array(
        '$project' => array(
            'MainsPower' => 1,
            '_id' => 0,
            'EventTS' => array(
                '$add' => array(
                    array('$subtract' => array('$EventTS', $default_date)),
                    array('$multiply' => array( 60000, '$arrayIndex' )) 
                )
            )
        )
),
);
$result = $collection->aggregate($pipeline);

Вывод запроса следующим образом

Array
(
    [0] => Array
        (
            [EventTS] => 1497033900000
            [MainsPower] => 204
        )

    [1] => Array
        (
            [EventTS] => 1497034800000
            [MainsPower] => 204
        )

    [2] => Array
        (
            [EventTS] => 1497035700000
            [MainsPower] => 204
        )
)

Но я хочу, чтобы мой результат был таким

 Array
(
    [0] => Array
        (
            [EventTS] => [1497033900000, 204]
        )

    [1] => Array
        (
            [EventTS] => [1497034800000, 204]
        )

    [2] => Array
        (
            [EventTS] => [1497035700000, 204]
        )
)

Можно ли изменить формат на указанный выше. Если возможно, дайте мне решение.

После сообщения ответ преобразован в PHP

$pipeline = array(
    array(
        '$unwind' => array(
            'path' => '$MainsPower',
            'includeArrayIndex' => "arrayIndex",
            'preserveNullAndEmptyArrays' => true
        )
    ),
    array('$match' => 
            array("MainsPower" => array('$ne' => null))
    ),
    array(
        '$project' => array(
            'MainsPower' => 1,
            'EventTS' => array(
                '$add' => array(
                     array('$subtract' => array('$EventTS', $var)),
                     array('$multiply' => array( 60000, '$arrayIndex' )) 
                )
            )
        )
    ),
    array(
        '$project' => array(
            'MainsPower' => array('$literal' => '$MainsPower'),
            'EventTS' => array('$literal' => '$EventTS')
        )
    ),
    array(
        '_id' => 0,
        'EventTS' => array(
            '$concatArrays' => ['$EventTS', '$MainsPower']
        )
    )
);

$result = $collection->aggregate($pipeline);
Chridam

Вы можете использовать комбинацию $literalоператора (который позволяет вам возвращать значение без синтаксического анализа, таким образом, вы можете создать массив из одного элемента) и $concatArraysоператора для объединения массивов из разных полей в один массив. Имейте в виду, что $concatArraysоператор доступен только для версии MongoDB 3.2.Xили новее. Для более ранних версий используйте $setUnionоператор вместо оператора, $concatArraysпоскольку он выполняет ту же работу.

Следующий сценарий агрегации оболочки mongo показывает, как можно получить желаемый результат, используя указанные выше операторы в $projectконвейере:

var date_start = new Date("2016-06-08T18:30:00.000Z"),
    default_date = new Date("1970-01-01T00:00:00.000Z"),
    pipeline = [    
        {
            "$unwind": {
                "path": "$MainsPower",
                "includeArrayIndex": "arrayIndex",
                "preserveNullAndEmptyArrays": true
            }
        },
        {
            "$match": { "MainsPower": { "$ne": null } }
        },
        {
            "$project": {
                "MainsPower": 1,                
                "EventTS": {                            
                    "$add": [
                        { "$subtract": ["$EventTS", default_date] },
                        { "$multiply": [60000, "$arrayIndex"] } 
                    ]               
                }
            }
        },
        {
            "$project": {
                "MainsPower": { "$literal": ["$MainsPower"] },              
                "EventTS": { "$literal": ["$EventTS"] }
            }
        },
        {
            "$project": {
                "_id": 0,                           
                "EventTS": {
                    "$concatArrays": ["$EventTS", "$MainsPower"]
                }
            }
        }
    ];

db.collection.aggregate(pipeline);

Преобразование вышеуказанного в PHP - тривиальное упражнение.

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

Нужно ли устанавливать MongoDB локально, чтобы подключить проект PHP к удаленному серверу MongoDB?

Что делать, чтобы импортировать данные в mysql из mongodb через драйвер PHP MongoDB?

Агрегат сортировки mongodb в php

получить документ из массива в mongodb с помощью php

MongoDB + PHP: безопасный фильтр для синтаксического анализа пользовательского ввода?

PHP / MongoDB, невозможно обновить записи в коллекции

Драйвер MongoDB PHP: запрос отдельных записей с ограничением и пропуском

Вставьте несколько документов в коллекцию mongodb с помощью одного оператора вставки с использованием php

Преобразование запроса MongoDB в PHP

PHP MongoDB - использование команды агрегирования без опции курсора устарело. Какие?

Запрос (найти множество) документов из нескольких коллекций с одинаковой структурой документа (MongoDB и PHP)

Создать базу данных в mongoDB с помощью php

Запрос MongoDB в PHP

php mongodb вставляет только уникальные значения?

Как получить значение объекта, вложенное внутри документа в коллекцию в MongoDB PHP

MongoDB PHP определяет соединение с базой данных

Как получить общее количество документов, хранящихся в коллекции MongoDB, с помощью PHP

распечатать значения поля массива mongodb документа с помощью php

получить документ из массива в mongodb с помощью php

PHP mongoDB получает отфильтрованное количество из миллиона записей, работает очень медленно

Запрос mongodb php в документах с вложенными объектами

Тайм-аут курсора библиотеки MongoDB и PHP

PHP и MongoDB: неопределенный индекс

Использовать отдельный в запросе php MongoDB

Как получить определенные поля в MongoDB PHP?

$ поиск с помощью php mongodb

проекция в php mongodb

Вызов сохраненных функций Mongodb на вставке в php

Исключение менеджера PHP MongoDB для агрегированной команды: «Не удалось декодировать документ с сервера».

Не удается пройти аутентификацию на mongodb с помощью PHP

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    How to click an array of links in puppeteer?

  3. 3

    (fields.E300) Поле определяет связь с моделью, которая либо не установлена, либо является абстрактной.

  4. 4

    Modbus Python Schneider PM5300

  5. 5

    Elasticsearch - Нечеткий поиск не дает предложения

  6. 6

    Как добавить Swagger в веб-API с поддержкой OData, работающий на ASP.NET Core 3.1

  7. 7

    TypeError: store.getState não é uma função. (Em 'store.getState ()', 'store.getState' é indefinido, como posso resolver esse problema?

  8. 8

    Перебирайте несколько столбцов в фрейме данных Panda и находите уникальные значения подсчета

  9. 9

    Проблемы со сборкой Python Image Registration Toolkit

  10. 10

    В типе Observable <unknown> отсутствуют следующие свойства из типа Promise <any>.

  11. 11

    Vue js CLI 2 импортирует и использует плагин javascript

  12. 12

    Автозаполнение с Java, Redis, Elastic Search, Монго

  13. 13

    Текущая ветка не настроена для извлечения В конфигурации не найдено значение для ключа branch.master.merge

  14. 14

    SQL Вычтите две строки друг от друга в одном столбце, чтобы получить результат

  15. 15

    How to normalize different curves drawn with geom = "step" when using stat_summary

  16. 16

    Merging legends in plotly subplot

  17. 17

    ViewPager2 мигает / перезагружается при смахивании

  18. 18

    Vue 2 / Vue CLI 3: создание асинхронных однофайловых компонентов

  19. 19

    как я могу удалить vue cli 2?

  20. 20

    Ошибка «LINK: фатальная ошибка LNK1123: сбой при преобразовании в COFF: файл недействителен или поврежден» после установки Visual Studio 2012 Release Preview

  21. 21

    Single legend for Plotly subplot for line plots created from two data frames in R

популярныйтег

файл