mongoose无法使用$ in运算符查找引用

时间:2013-11-17 15:14:06

标签: node.js mongodb mongoose

我有一个像这样的用户架构

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用户子文档的所有活动。

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);
}

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

1 个答案:

答案 0 :(得分:1)

我发现了什么问题。 我使用mongo shell手动插入了示例用户文档,target数组中的followingString而不是ObjectId,因此mongoose无法找到它。