2017-01-17 3 views
2

Когда выполняется следующий запрос, результаты отображаются в оболочке mongo.

Примеры записей

{ 
    "_id" : ObjectId("587e21df6e79d255011a9c6a"), 
    "vendor_id" : "101", 
    "subscription_id" : 14, 
    "created_at" : ISODate("2017-01-17T13:53:35.272Z") 
} 
{ 
    "_id" : ObjectId("587e21df6e79d255011a9c6c"), 
    "vendor_id" : "102", 
    "subscription_id" : 14, 
    "created_at" : ISODate("2017-01-17T13:56:35.272Z") 
} 

Запрос

db.user_config.aggregate({$group: 
{ 
    _id : "$subscription_id", 
    list: 
    { 
     $push: 
     { 
      _id: "$_id", 
      vendor_id: "$vendor_id" 
     } 
    } 
}}) 

Результаты

/* 1 */ 
{ 
    "result" : [ 
     { 
      "_id" : 14, 
      "list" : [ 
       { 
        "_id" : ObjectId("587e21df6e79d255011a9c6a"), 
        "vendor_id" : "user_101" 
       }, 
       { 
        "_id" : ObjectId("587e21df6e79d255011a9c6b"), 
        "vendor_id" : "user_101" 
       } 
      ] 
     } 
    ], 
    "ok" : 1.0000000000000000 
} 

Но когда то же самое выполняется через laravel, возникает следующая ошибка. $ Трубопровод не список (неожиданный индекс: "$ группа")

Ниже приведен код Laravel

$configuration_list = UserConfig::raw()->aggregate([ 
      '$group' => [ 
        '_id' => '$subscription_id', 
        'list' => ['$push' => 
        ['_id' => '$_id', 'vendor_id' => '$vendor_id']] 
       ] 
      ] 
     ); 

Может кто-то пожалуйста, помогите мне решить эту проблему ..

ответ

0

Wrap the aggregation pipeline steps in an array:

$pipeline = [ 
    [ 
     '$group' => [ 
      '_id' => '$subscription_id', 
      'list' => [ 
       '$push' => [ 
        '_id' => '$_id', 
        'vendor_id' => '$vendor_id' 
       ] 
      ] 
     ] 
    ] 
]; 
$configuration_list = UserConfig::raw()->aggregate($pipeline); 
+0

Я попытался с вашим кодом и даже раньше, но пустой ответ возвращается. На самом деле результат ожидается, так как тот же запрос дает результат в оболочке манго – Sharath