我是Nodejs和Mongodb的新手。我正在我的项目中构建消息聊天功能。我已经完成了消息架构。
这是我的用户模型架构:
var UserSchema = new mongoose.Schema({
name : {
type : String
},
email : {
type : String
},
password : {
type : String
},
chats : [{
chatId : String,
messages : [{
type : mongoose.Schema.Types.ObjectId,
ref : 'Message'
}]
}]
});
我想将所有新消息对象添加到匹配chatId的子文档中。因此,我可以轻松地在结构化的前端(Angular)上使用它
我已经尝试过了:
var msg = new Message({
senderId : req.user._id,
to : toUser,
from : user,
message : req.body.msg,
datetime : new Date()
})
msg.save();
const chatFr = await User.findOneAndUpdate(
{ 'chats.chatId' : req.user._id },
{ $push : { 'chats' : msg }}
)
它正在创建一个单独的对象。我不知道如何在此处的子文档中使用“ where”。我来自Sql背景。请帮助如何在mongodb / mongoose
的子文档中执行条件查询答案 0 :(得分:1)
尝试一下:
await User.findOneAndUpdate(
{ 'chats.chatId' : req.user._id },
{ $addToSet: { 'chats.$.messages' : msg }}}
)
您需要使用$ position operator进行插入。您还可以使用$addToSet。