2017-12-11 4 views
1

Ich habe Sammlungen Benutzer, Nachrichten und Benutzer-News. "User-News" bevölkert zu "Benutzer" und "Nachrichten".Mongoose Sortier- und Suchdokument nach ausgefülltem Feld

Kann ich Dokument von "Benutzer-Nachrichten" durch "user.name" oder "news.title" sortieren und suchen?

const usersSchema = new Schema({ name: String }) 

const newsSchema = new Schema({ title: String }), 

UsersNewsModel.find(queryObj) 
    .populate('user', 'name') 
    .populate('news', 'title') 
    .sort({ 'user.name': -1 }) 
    .exec((findError, records) => {...} 

Antwort

0

Mongoose Populate unterstützt keine Sortierung aus dem bevölkerten Feld. Aber Sie können so etwas mit Aggregat machen.

UsersNewsModel.aggregate([ 
 
    { 
 
    $lookup: { 
 
     from  : 'user', 
 
     localField : 'user', 
 
     foreignField: '_id', 
 
     as   : 'user' 
 
    } 
 
    }, 
 
    { 
 
    $unwind: { 
 
     path: $user 
 
    } 
 
    }, 
 
    { 
 
    $sort: { 
 
     user.name: -1 
 
    } 
 
    } 
 
])