使用$ ne和$或条件从ObjectId中查询一个集合
我需要向用户提供一个未答复(由用户)问题,用户模型持有过去用数组提出的问题,比如user.asked
。
我想澄清,我promised mongoose
图书馆,因此我使用这些function,没有什么幻想。
用户型号:
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") ] } } } }
但是这将返回集合中的所有文档(甚至是所提及的文档)。
你有什么build议吗?
您可以使用$nin
运算符来查找包含与数组中的任何值都不匹配的字段的文档:
Question.findAsync({ _id: { $nin: [ObjectId("56ccfb048f896e0c2d06d08f"), ObjectId("56ccfb048f896e0c2d06d98f")] } })