【发布时间】:2020-12-01 00:31:10
【问题描述】:
我一直在尝试制作一个聊天应用程序,并且我使用以下架构来发送消息:
const messageObject = {
sender: {type: mongoose.Schema.Types.ObjectId, ref: 'User', require: true},
message: {type: String, require: true, min: 1, max: global.messageMaxLength},
time: Number,
seen: Boolean
}
const MessageSchema = mongoose.Schema({
_id: {type: mongoose.Schema.Types.ObjectId, ref: 'User', require: true},
messages: [messageObject]
}, {versionKey: false}) ;
module.exports = mongoose.model('Messages', MessageSchema);
它成功地接收条目。条目示例:
"_id": "5fb3d971e6092d2da001bbad",
"messages": [
{
"_id": "5fc58bfe0e0ffb313c27fa0a",
"message": "Hello user",
"time": 1606781949959,
"seen": false
},
{
"_id": "5fc58c010e0ffb313c27fa0b",
"message": "Hello user",
"time": 1606781953442,
"seen": false
},
{
"_id": "5fc58c020e0ffb313c27fa0c",
"message": "Hello user",
"time": 1606781954137,
"seen": false
}
]
}
我现在只想要seen:false 消息,但是当我尝试在查找或聚合中编写代码时,我得到了所有数据,即上述记录:
MessageModel.find({$and: [{_id: req.userData.userid}, {'messages.seen': false}]}).then(result => {
res.status(200).json({
message: "passed",
result,
});
})
但是,如果我给出{"messages.seen": null}},它可以正常工作并返回 [],并且 1 个带有 seen: null 的条目将返回整个数组。
我看过所有论坛,没有人遇到过这种错误。请帮忙。
谢谢
【问题讨论】:
标签: node.js json mongodb mongoose