2016-08-05 15 views
0

ich ein REST-API für mobile app bin zu entwickeln, ist dieser Teil des Modells iMungo - Set Präsentation von Fremdschlüssel-Referenz

bin mit
var UserSchema = new Schema(
{ 
    email : 
    { 
     type : String, 
     unique : true 
    }, 
    login_type : String, 
    username : 
    { 
     type : String, 
     index : true 
    }, 
    password : String 
} 

Und ich hinzugefügt Benutzer-oid-Schema als Referenz schreiben

var PostSchema = new Schema(
{ 
    author : {type : Schema.Types.ObjectId, ref : "User"}, 
    board_id : {type : Schema.Types.ObjectId, ref : "Board"}, 
    regDate : Number, 
    lastModDate : Number, 
    title : String, 
    content : String, 
} 

So können die Posts auf Benutzersammlungen verweisen, um username des Benutzers zu erhalten, der sie gepostet hat. Also ich möchte nur den Benutzernamen des Benutzers bekommen, andere sind nicht notwendig. Dafür verwende ich folgt.

var query = Post.find({"regDate" :{$lte : before}}, 
{ 
    _id : 1, 
    title : 1, 
    "author.username" : 1, 
    regDate : 1 
}) 

aber der Mungo, dass "author.username" ignoriert. Wie kann ich nur Benutzernamen von author bekommen, nicht alle?

Antwort

1

Sie sollten populate Funktion verwenden und ausgewählte Felder aufzählen dort:

Post 
    .find({ regDate :{ $lte : before }}, 'title reqDate') 
    .populate('author', 'username') 
    .exec();