我在猫鼬中有以下模型。 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中更新后指定要投影的字段,以便我可以删除额外的查询?
答案 0 :(得分:1)
在options
参数中加入select参数,并列出您要投放的所有字段。
{
upsert : true,
select:{"projects":1} // all the fields you would want to select
}