mongoose如何在更新时投影受保护的字段

时间:2014-12-04 19:29:54

标签: mongodb mongoose

我在猫鼬中有以下模型。 projects字段为protected

var UserProjectSchema = new Schema({
    user : ObjectId
    , projects : {type : [ObjectId], select:false} //protected field
    , projectCount : Number
});

我希望更新后的protected字段,以便我可以返回projects的新集。

UserProjectSchema.statics.addProject = function(userId, projectId) {

    UserProject.findOneAndUpdate({
       user:userId
    },
    {
       $addToSet: {"projects" : projectId}
     , $inc : {"projectCount" : 1}
    },

    {
     upsert : true
     //project : '+projects' it won't work
    },

    function(err, doc){
     //doc.projects is undefined

     // UserProject.findOne({user:userId},'+projects', function(err, doc){
     //    doc.projects is now available but this extra query ???
     //})
    });
}

var UserProject = mongoose.model('user_projects', UserProjectSchema);

Mongoose在成功查询后返回更新的文档,但缺少指定要投影的字段。 有没有办法在mongoose中更新后指定要投影的字段,以便我可以删除额外的查询?

1 个答案:

答案 0 :(得分:1)

options参数中加入select参数,并列出您要投放的所有字段。

{
  upsert : true,
  select:{"projects":1} // all the fields you would want to select
}