使用$ 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")] } })