Mongo:在子目录上查询

您好,我有这个问题时检查如果一个子文档存在之前推新的子文档。

var UserSchema = new Schema({ name : String, app_key : String, app_secret : String, tasks : [{type: Schema.ObjectId, ref: 'Task'}] // assuming you name your model Task }); var TaskSchema = new Schema({ name : String, lastPerformed : Date, folder : String, user : {type: Schema.ObjectId, ref: 'User'} // assuming you name your model User }); 

有了这个,你对所有用户的查询,包括他们的任务数组可能是:

 User.findOne({...}).populate('tasks').run(function(err, user) { var subdoc = user.tasks.id(mytask.id); if(subdoc){ //not exist //push } }); 

这是错误的:

 TypeError: Object has no method 'id' 

你正在得到这个错误,因为没有为'tasks'子文档定义'id'字段。 你可能意味着'user.tasks。 _id “,它会返回默认情况下MongoDB添加到其文档的ObjectId。