mongoose无法使用$ in操作符find引用

我有这样的用户架构

var userSchema = new mongoose.Schema({ username: String, following: [{created: {type: Date, default: Date.now}, target: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true }}] }); 

和一个用户活动模式:

 var activity = new mongoose.Schema({ text: String, private: Boolean, _creator: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true } }); 

我试图获得所有的活动,其中_creator$infollowing子文档$in

 userModel.methods.getNewsfeed = function(callback){ var following_targets = _.pluck(this.following, 'target') // using underscore.js activityModel.find( { $or: [ { _creator: this._id } , { $and: [ { private: { $ne: true } } , {'_creator': { $in: following_targets }} ] } ] } ) .exec(callback); } 

但是,此查询只返回当前用户创build的活动。 删除_creator: this._id部分返回一个空数组。

我发现什么是错的。 我使用mongo shell手动插入示例用户文档, following数组中的targetString而不是ObjectId ,所以mongoose找不到它。