Amit
Amit

Reputation: 49

How to convert mongoDB query into PHP?

My query is working in mongodb and produce output Properly. But same query i tried to run using php then it gives following error

Array
    (
        [ok] => 0
        [errmsg] => A pipeline stage specification object must contain exactly one field.
        [code] => 16435
    )

Following is my MongoDB Query

db.sample_coll.aggregate(
{
  $unwind: {
        path:"$KeyValues", 
        includeArrayIndex:"arrayIndex", 
        preserveNullAndEmptyArrays:true 
    }
},
{
  $project: {
        timestamp:{ 
          "$add":["$EventTS",{"$multiply":[60000,"$arrayIndex"]}] 
        } ,
        "InputVolt":"$KeyValues.InputVolt", 
        arrayIndex:1
        }
},
{
  $match: {
    $and: [ 
        {InputVolt: {$ne: null}}
    ]
  }
}
); 

The Above query is converted in php

$pipeline = array(
            array('$unwind' => 
                    array( 'path' => '$KeyValues'),
                    array( 'includeArrayIndex' => 'arrayIndex' ), 
                    array( 'preserveNullAndEmptyArrays' => 'true' )
            ),
            array(
                '$project' => array(
                    'timestamp' => array(
                        '$add' => array(
                            '$EventTS',
                            array('$multiply' => array( 60000, '$arrayIndex' )) 
                        )
                    ),
                    array( 'InputVolt' => array( '$KeyValues', 'InputVolt'   ) ) ,
                    array('arrayIndex' => 1)
                )
            ),
            array(
                '$match' => array(
                    '$and' => array(
                        array('InputVolt' => array('$ne' => null )),
                    )
                )
            )

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

Kindly help to resolve this issue. Thanks in advance

Upvotes: 1

Views: 573

Answers (1)

Maxim Pavlov
Maxim Pavlov

Reputation: 86

Your pipeline in PHP:

$pipeline = array(
        array('$unwind' => array(
            'path' => '$KeyValues',
            'includeArrayIndex' => 'arrayIndex',
            'preserveNullAndEmptyArrays' => true
        )),
        array('$project' => array(
            'timestamp' => array(
                '$add' => array('$EventTS', array('$multiply' => array(60000, '$arrayIndex')))
            ),
            'InputVolt' => '$KeyValues.InputVolt',
            'arrayIndex' => 1
        )),
        array('$match' => array(
            'InputVolt' => array('$ne' => null)
        ))
    );

Upvotes: 1

Related Questions