2017-06-26 2 views
2

Ich muss die endgültigen Ergebnisse basierend auf dem Suchergebnis sortieren. Unten ist meine Aggregatabfrage:

{ $match : {status:'active'}, 
{ $limit : 10}, 
{ $lookup: 
    { 
    from  : "metas", 
    localField : "_id", 
    foreignField: "post_id", 
    as   : "meta" 
    } 
} 

Diese Abfrage zu Ergebnissen wie:

{ 
    "_id": "594b6adc2a8c4f294025e46e", 
    "title": "Test 1", 
    "created_at": "2017-06-22T06:59:40.809Z", 
    "meta": [ 
     { 
      "_id": "594b6b072a8c4f294025e46f", 
      "post_id": "594b6adc2a8c4f294025e46e", 
      "views": 1, 
     }, 
     { 
      "_id": "594b6b1c2a8c4f294025e471", 
      "post_id": "594b6adc2a8c4f294025e46e", 
     } 
    ], 
}, 
{ 
    "_id": "594b6adc2a8c4f29402f465", 
    "title": "Test 2", 
    "created_at": "2017-06-22T06:59:40.809Z", 
    "meta": [ 
     { 
      "_id": "594b6b072a8c4f294025e46f", 
      "post_id": "594b6adc2a8c4f29402f465", 
      "views": 0, 
     }, 
     { 
      "_id": "594b6b1c2a8c4f294025e471", 
      "post_id": "594b6adc2a8c4f29402f465", 
     } 
    ], 
}, 
{ 
    "_id": "594b6adc2a8c4f29856d442", 
    "title": "Test 3", 
    "created_at": "2017-06-22T06:59:40.809Z", 
    "meta": [ 
     { 
      "_id": "594b6b072a8c4f294025e46f", 
      "post_id": "594b6adc2a8c4f29856d442", 
      "views": 3, 
     }, 
     { 
      "_id": "594b6b1c2a8c4f294025e471", 
      "post_id": "594b6adc2a8c4f29856d442", 
     } 
    ], 
} 

Nun, was ich hier will, ist diese Ergebnisse auf unter ‚Meta‘ ‚Ansichten‘ zu sortieren. Wie das Ergebnis wird in absteigender Reihenfolge von 'meta.views' Liste sein. Erstes Ergebnis wird mit Blick = 3, dann Ansichten = 1 und dann Ansichten = 0

Antwort

2

$ entspannen Betreiber teilt ein Array in einzelne Dokumente für jedes Objekt enthalten in einem Array

Für zB

db.collection.aggregate(

    // Pipeline 
    [ 


     // Stage 1 
     { 
      $unwind: { 
       path : "$meta" 
      } 
     }, 

     // Stage 2 
     { 
      $sort: { 
       'meta.views':-1 
      } 
     }, 

    ] 


); 
meta
+0

Danke @RubinPorwal. Deine Antwort hilft mir 80%. Rest Ich schließe auch $ group ein. – Neeraj

+0

@neetra Könnten Sie bitte Ihre Antwort posten? – user3542450

Verwandte Themen