Question

Works and returns me one record

db.gfk_products.aggregate([
    {$match : {product_id : '50910288'}},
    {$project : {
        features: "$features.key"
    }}
])

Does not return anything

db.gfk_products.find({

    aggregate : [
        {$match : {product_id : '50910288'}},
        {$project : {
            features: "$features.key"
        }}
    ]
})

Don't know why! Second query is generated by mongodb adapter for cakephp.

EDIT

Respective Cakephp Code

$cond['conditions'] = array(
    'aggregate' => array(
        array(
            '$match' => array(
                'product_id' => $itemID
            ),
        ),
        array(
            '$project' => array(
                'features' => '$features.key'
            ),
        ),
    ),
);
$result = $this->Product->find('all',$cond);
Was it helpful?

Solution

Ankit,

There is no facility in MongoDB to execute aggregate pipeline via the find query. You can find more details about the method used specifically for aggregate in MongoDB/PHP driver - http://www.php.net/manual/en/mongocollection.aggregate.php .

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top