Я пытаюсь получить сообщения пользователей с помощью mongodb в laravel, этот запрос отлично работает в оболочке mongodb, но не работает в laravel, и он дает мне эту ошибку:
Объект спецификации стадии конвейера должен содержать ровно одно поле.
это мой запрос в оболочке mongodb:
db.instaPosts.aggregate([
{"$match" :{ "userid" : "1507073550"}},
{"$group" :
{ "_id" : "$post.location.id",
"location" : {"$first":"$post.location.name"},
"count":{ "$sum" : 1}}}
])
и вот результаты:
{ "_id" : null, "location" : null, "count" : 7 }
{ "_id" : "332558707", "location" : "Daryache Chitgar,Tehran,Iran", "count" : 1 }
{ "_id" : "250445386", "location" : "دانشگاه علم و فرهنگ", "count" : 1 }
{ "_id" : "1343757649052341", "location" : "Agor Caffe", "count" : 1 }
{ "_id" : "111106416225578", "location" : "Santiago Bernabeu, Madrid", "count" : 1 }
{ "_id" : "506047058", "location" : "Cardiff City Stadium", "count" : 1 }
а это мой контроллер:
$places = Posts::raw(function ($collection){
return $collection->aggregate([
[
'$match' => [
'userid' => [ '$eq' => '1507073550']
],
'$group'=> [
'_id' => '$post.location.id',
'location' => [
'$first'=>'$post.location.name'
],
'total' => [
'$sum' => 1
],
]
]
]);
});
точно такие же вещи! но это не работает.