2013-05-03 10 views
16

Vorrei ordinare un documento popolato dalla raccolta che prelevo, ricevo un errore che lo richiede.Come ordinare un documento popolato nella richiesta di ricerca?

Ammettiamolo un documento Group (Group) e 'membro' (Group.Members)

Group 
    .find({}) 
    .populate('Members') 

funziona perfettamente, ma vorrei ordinare in modo faccio questo:

Group 
    .find({}) 
    .populate('Members', ['_id', 'name'], null, { sort: [[ 'created_at', 'desc' ]] }) 

Ho ricevuto l'errore

risposta

14

Questo esempio sopra funziona con Mongoose 2.x, con Mangusta 3.x, utilizzare questa sintassi:

Group 
    .find({}) 
    .populate('Members', '_id name', null, { sort: { 'created_at': -1 } }) 
6

e per uso 4.x Mongoose questa sintassi:

Kitten.find().populate({ 
    path: 'owner' 
    , select: 'name' 
    , match: { color: 'black' } 
    , options: { sort: { name: -1 }} 
}).exec(function (err, kittens) { 
    console.log(kittens[0].owner.name) // Zoopa 
}) 

// alternatively 
Kitten.find().populate('owner', 'name', null, {sort: { name: -1 }}).exec(function (err, kittens) { 
    console.log(kittens[0].owner.name) // Zoopa 
}) 

Riferimento: Mongoose docs

+3

Non funziona per me. –

+0

Inoltre, non riesco a trovare il riferimento esatto del comportamento dell'opzione di ordinamento in mangusta. Ma di sicuro le opzioni sono il quinto parametro nella sintassi alternativa, dopo percorso, selezione, modello e corrispondenza. –

+0

@NicoPasserini scusa se non funziona per te, è l'esatto esempio della documentazione ufficiale che è collegata nella risposta. Quindi probabilmente stai sbagliando. – Wtower

0

Di seguito ha lavorato per me in Mongoose v5.0.5:

Schedule.find({}) 
 
     .populate({path: 'eventComments', options: {sort:{"commentDate": "descending"}}}) 
 
     .exec(function(err, result) { 
 
      if (err) { 
 
       throw err 
 
      } 
 

 
      else { 
 
       return res.json(result); 
 
      } 
 
    });

P.S. La differenza fondamentale tra questo esempio e l'esempio di Kitten è che commentDate è tra virgolette, mentre Data (nell'esempio di Kitten) non lo è. Questa modifica potrebbe essere necessaria per alcuni di voi. Spero che questo ti aiuti.

Problemi correlati