2014-05-08 9 views
6

I Ergebnis der folgenden Abfrage in Laravel Rahmen der Arbeit (verwendet jenssegers Bibliothek)
Wie Aggregat in mongodb in Laravel Rahmen

db.product.aggregate({ $group : {_id : "$catid", total : { $sum : 1}}}, 
           {$sort:{total:-1}}); 

ich dies wie folgt

return DB::connection($this - > connection)- > 
      collection($this - > collection) - > aggregate(
     '{ $group : {_id : "$catid", total : { $sum : 1 }}},{$sort:{total:-1}}''); 
versucht zu tun bekommen müssen auszuführen

Aber es gibt Fehler wie "ErrorException Undefined Index: Aggregat" müssen wissen, dass wie mongodb "db.collection.aggregate"

verwenden 10

Das Dokument meiner Sammlung ist wie dieses

{ 
    "_id": ObjectId("5369d68611fe14ddc5f59ff9"), 
    "sku": 123456, 
    "productid": 1, 
    "name": "name1", 
    "catid": 1 
} 
+0

wenn möglich .. zeigen Sie Ihre Datenbankstruktur in Frage – Mayuri

+0

Hallo Mia, ich habe ein Dokument meiner Sammlung aufgenommen, um eine Vorstellung von der Struktur zu bekommen, danke, um das zu untersuchen. –

Antwort

5

Sie das Aggregat Methode auf der Jenssegers Bibliothek zugreifen kann über die raw() Funktion.

Hier ist ein Beispiel eines Arbeitszufalls Aggregat Anruf ist, dass ich verwenden, können Sie es an Ihre Bedürfnisse anpassen:

//Perform an aggregate function and get a cursor 
$cursor = Data::raw()->aggregate([ 
    ['$group' => 
     ['_id' => '$name', 'count' => ['$sum' => 1]] 
    ], 
    ['$sort' => ['count' => -1]], 
    ['$limit' => 30], 
    ['$project' => ['_id' => 0, 
        'text' => '$_id', 
        'size' => '$count', 
        ] 
    ], 
]); 

//Iterate your cursor 
$current = $cursor; 
do { 
    echo $current; //Process each element 
} while (!($current = $cursor->next())); 

Beachten Sie, dass die raw() Methode erfordert einen Cursor zu verwenden, weil es eine Low-Level ist Anruf.

Ich hoffe, es hilft.

-1

versucht so etwas wie diese

db.product.aggregate(
    { "$group" : 
     { "_id" : "$catid", 
      "total" : { "$sum" : 1} 
     } 
    }, 
    { "$sort" : {"productid":-1} } 
); 
+3

Vielen Dank für Ihre Idee, aber ich muss diese Abfrage mit Laravel-Frame-Arbeit ausführen. Ich benutze jenssegers Bibliothek als db-Konnektor –

Verwandte Themen