我无法在嵌套查询中推送数据
我无法理解我的代码中遗漏了什么(我是mongodb的新手,只是尝试一下)
我的目标是在帖子中添加“帖子”
const Schema = mongoose.Schema;
const UserDetail = new Schema({
username: String,
password: String,
firstname: String,
lastname: String,
email: String,
posts: {
post:{
title: String,
article: String,
comments: {}
}
}
});
const User = mongoose.model('userInfo', UserDetail, 'userInfo');
module.exports = User;
这是我的更新代码
User.findOneAndUpdate({_id: req.user._id},{ $push: {"posts": { "post" : { "article": req.body.description }} } });
提前谢谢
答案 0 :(得分:1)
$push
用于将指定的值附加到数组。如果文档中不存在要更新的字段,它将以该值作为元素添加数组字段,但是如果该字段不是数组,则该操作将失败。在您的情况下,posts
是嵌入式文档,而不是数组。
您可以更新架构以将posts
设置为以下数组:
const Schema = mongoose.Schema;
const UserDetail = new Schema({
username: String,
password: String,
firstname: String,
lastname: String,
email: String,
posts: [
{
title: String,
article: String,
comments: []
}
]
})
然后进行推送
User.findByIdAndUpdate(req.user,
{ "$push": {
"posts": {
"article": req.body.description
}
} }
);
,或者如果使用现有架构,则将{strong> $set
与dot notation一起使用。使用 $set
的操作遵循以下示例:
User.findByIdAndUpdate(req.user,
{ "set": { "posts.post.article": req.body.description } }
);