我有这样的用户架构

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

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


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

最佳答案

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

关于node.js - Mongoose 无法使用$ in运算符找到引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20032316/

10-09 18:29