我有一个像这样的用户架构
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
部分将返回一个空数组。
答案 0 :(得分:1)
我发现了什么问题。
我使用mongo shell手动插入了示例用户文档,target
数组中的following
是String
而不是ObjectId
,因此mongoose无法找到它。