我有这样的用户架构
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
数组中的following
是String
而不是ObjectId
,所以mongoose找不到它。
关于node.js - Mongoose 无法使用$ in运算符找到引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20032316/