我有这个架构
var postSchema = new Schema({
category: 'Home',
body: 'sometext',
comments: [{
nickName: 'Meron',
comment: 'Hello',
date: 'Feb 2 2017, 23:32',
commentUnders: [{
nickName: 'Storseses',
comment: 'It's our dat',
date: 'Feb 5 2017, 22:03'
}]
}]
});
我如何findByIdAndUpdate
评论下?我已经在评论中发表了一条评论,其中包含id" 5897518c0a913a842cc041cf"。我试过这个解决方案但不起作用:
Post.findByIdAndUpdate( {'comments._id': '5897518c0a913a842cc041cf'},
{
$push: {
commentUnders: {
"comment" : "Так, что мне делать-то?",
"nickName" : "Great",
"date" : Date.now()
}
}
}, function(err, data) {
if (err) {console.log(err); }
console.log(data);
});
答案 0 :(得分:1)
使用$
positional operator与 findOneAndUpdate()
功能代替 findByIdAndUpdate()
来更新匹配的comments
数组:< / p>
Post.findOneAndUpdate(
{ "comments._id": "5897518c0a913a842cc041cf" },
{
"$push": {
"comments.$.commentUnders": {
"comment" : "Так, что мне делать-то?",
"nickName" : "Great",
"date" : Date.now(),
}
}
},
function(err, data) {
if (err) console.log(err);
console.log(data);
}
);