Mongoose - 限制引用模型上的字段

时间:2013-12-20 10:18:08

标签: mongodb mongoose nosql

我的users模型可以容纳多个notifications。在NotificationSchema中,notifier保留用户ID,并引用users模型。当我执行以下查询时:

User.find().populate('notifications.notifier').exec(function(err,users){
  //users[0].notifications[0].notifier    
  //I am getting all fields from the referenced user   
  //I don't want the whole document but some fields only 
});

如何限制/限制引用某些模型时应该可用的字段。

以下是users型号

var NotificationSchema =new Schema({
    notifier : {type:Schema.Types.ObjectId, ref:'users'},
    //How could I say :
    //notifier : {type:Schema.Types.ObjectId, ref:'users', fields:['_id', 'name']}
    //because I know what fields do I need from referenced model for this Schema.

   __SOME__
   __OTHER__
   __FIELDS__
});

var UsersSchema = new Schema({
    name : {given:String, middle:String, family:String}
    email:String,
    password:String,
    notifications : [NotificationSchema]
});

var Users = mongoose.model('users', UsersSchema);

顺便说一句,model我没有单独的NotificationSchema

如果此功能无法使用,我该如何手动实现它。我错过了一些文档吗?请让我知道robust这样做的方式。

1 个答案:

答案 0 :(得分:0)

我在mongoose docs

中找到了它

我在the documentation

字段选择部分找到了答案
User.find().populate('notifications.notifier', '_id name').exec(function(err, users) {
 //users[0].notifications[0].notifier           ^^^^^^^^^ HOW FUNNY
 //Yes I am getting '_id' and 'name' fileds only
});