【发布时间】:2017-01-03 18:44:27
【问题描述】:
我有这样的架构设计
var userNotificationSchema = new Schema({
notification_id: { type: Schema.Types.ObjectId, ref: 'notifications' },
isRead: { type: Boolean }
});
var userSchema = new Schema({
notification: [userNotificationSchema]
});
我想获取isRead: 'false'的所有通知数组列表。
为此我写了
Model.User.find({
_id: userid,
'notification.isRead': false
}, function (err, result) {
console.log(result);
res.send(result);
});
但这会返回[] 作为结果。
【问题讨论】:
-
您的应用中使用的猫鼬版本是什么?
-
猫鼬版本 4.6.1
-
查询看起来正确,_id 的用户 ID 是否正确?
-
您是否尝试过仅使用
isRead属性进行查询,例如Model.User.find({ "notification.isRead": false }).exec(callback)?你有任何结果吗?如果是这样,则检查仅包含userid的查询是否有效,即Model.User.find({ "_id": userid }).exec(callback)。如果这没有给您任何结果,则表示您指定的userid不存在,这可能是组合过滤器不起作用的原因。
标签: node.js mongodb mongoose mongodb-query aggregation-framework