我需要向用户提供一个未答复的(按用户)问题,其中用户模型包含过去使用数组提出的问题,比如说user.asked
。
我想澄清一下,我宣传了mongoose
库,因此我正在使用这些函数,没什么特别的。
用户模型:
var UserSchema = new Schema({
:
asked: [{ type: Schema.Types.ObjectId, ref: 'Question' }]
})
这是我到目前为止所尝试的内容:
Question.findAsync({
_id: {
$ne: {
$or: req.user.asked
}
}
})
结果:Cast to ObjectId failed for value \"[object Object]\" at path \"_id\"
。
我还尝试进行聚合(给出示例):
{
$match: {
_id: {
$ne: {
$or: [ ObjectId("56ccfb048f896e0c2d06d08f"), ObjectId("56ccfb048f896e0c2d06d98f") ]
}
}
}
}
然而,这将返回集合中的所有文档(甚至是引用的文档)。
你有什么建议吗?
答案 0 :(得分:1)
您可以使用$nin
运算符查找一个字段与数组中没有任何值匹配的文档:
Question.findAsync({
_id: {
$nin: [ObjectId("56ccfb048f896e0c2d06d08f"), ObjectId("56ccfb048f896e0c2d06d98f")]
}
})