¿Cómo cambiar el valor de la matriz de respuesta a la consulta usando MongoDB y PHP?

usuario3663481

Soy nuevo en MongoDB. He creado una consulta en mongoDB usando php. Usando la consulta de la siguiente manera

$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);

Resultado de la consulta de la siguiente manera

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

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

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

Pero quiero mi salida así

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

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

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

¿Es posible cambiar al formato anterior? Si es posible, por favor dame una solución.

Después de publicar la respuesta convertida a 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

Puede usar una combinación del $literaloperador (que le permite devolver un valor sin analizar, por lo que puede crear una matriz de un solo elemento) y el $concatArraysoperador para concatenar matrices de diferentes campos en una matriz. Tenga en cuenta que el $concatArraysoperador solo está disponible para la versión MongoDB 3.2.Xo posterior. Para versiones anteriores, use el $setUnionoperador en lugar del, $concatArraysya que hace el mismo trabajo.

El siguiente script de agregación de mongo shell muestra cómo puede obtener el resultado deseado utilizando los operadores anteriores en la $projectcanalización:

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);

Convertir lo anterior a PHP es un ejercicio trivial.

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

¿Cómo puedo obtener la clave y el valor de una respuesta json multidimensional usando php?

Cómo cambiar la propiedad particular de la matriz y obtener el valor usando node.js

Cómo cambiar el valor de intervalo dentro de la tabla renderizada dinámicamente con Django usando la respuesta AJAX

¿Cómo cambiar el valor de la matriz usando el puntero?

¿Cómo puedo cambiar el valor dentro de la matriz de esquemas dentro del esquema con una consulta de mangosta o mongodb?

¿Cómo puedo cambiar el valor dentro de la matriz de esquemas dentro del esquema con una consulta de mangosta o mongodb?

Cómo comparar el valor de la clave y obtener valor en la matriz de PHP

Cómo cambiar el valor de la matriz / objeto actual solo usando ngmodel angular2

¿Cómo cambiar el orden de la matriz con MongoDB?

Cómo pasar el valor del índice y obtener el nombre de la respuesta de matriz angular

¿Cómo leer los parámetros y el valor de la cadena de consulta usando Java?

Cómo cambiar el valor de píxel de la imagen png usando php

¿Cómo usar la consulta de conteo en una matriz de matriz de objetos usando Nodejs, mongodb y express?

Cambiar el valor de la columna de la tabla html, generada en la consulta MySQL, usando php

cómo extraer el valor de la respuesta json que está debajo de la matriz y la matriz está bajo el objeto

Cómo hacer coincidir letras y verificar que el valor esté presente dentro de la matriz o no usando PHP

Cambiar el valor de la respuesta de la API React

Cómo obtener el valor de la cadena de consulta STRING usando php

¿Cómo ordenar una matriz multidimensional en PHP usando el valor de la matriz?

¿Cómo actualizar el objeto mongodb para cambiar la matriz de valor clave en una matriz pura?

Pregunta sobre cómo cambiar el valor de la matriz antes de ordenar la matriz

PHP foreach cambiar el valor de la matriz

php cambiar el valor de la matriz multidimensional

¿Cómo filtrar el valor de la matriz y groupBy en mongodb?

¿Cómo cambiar el nombre de la columna cuando estamos usando mayúsculas y minúsculas? Consulta de SQL Server

Cómo reemplazar la clave y el valor en una matriz de objetos usando javascript

¿Cómo actualizar el valor de la matriz en MongoDb?

¿Cómo cambiar el nombre de la carpeta usando PHP?

¿Cómo editar el valor de la matriz usando jquery?

TOP Lista

CalienteEtiquetas

Archivo