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
是$in
的following
子文档$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
数组中的target
是String
而不是ObjectId
,所以mongoose找不到它。