在MongoDB中更新子文档
现在,我正在ASP.NET中开发MongoDB,刚刚阅读了一篇文章,其中它以一篇博客文章为例,并提到了以下更新评论(子文档)的步骤在MongoDB中更新子文档,mongodb,document,Mongodb,Document,现在,我正在ASP.NET中开发MongoDB,刚刚阅读了一篇文章,其中它以一篇博客文章为例,并提到了以下更新评论(子文档)的步骤 该博客被作为一个主要文件 评论被视为子文档,并与主文档一起发布 当我们需要向特定博客插入新评论时,我们将获取现有的博客文档,在前端添加新评论(子文档),并再次使用博客ID更新博客文档 如果是这样的话,让我们以非常流行的博客场景为例,其中数千条评论被发布到一个博客上。如果必须发布任何新的评论,我们需要将所有现有的评论从DB服务器发送到Web服务器,这样会增加网络流量
这是一种通用方案,还是有其他方法向子文档添加新内容?也就是说,我需要一个功能,只需在现有文档中插入新值即可。MongoDB支持“推送”命令。将向现有数组追加项。有一个$push运算符,用于将指定值追加到数组。假设我们有以下博客文章模式。帖子中已经有两条评论,如果您想在帖子中添加另一条评论,可以使用$push操作符。我已经编写了一个示例代码,用于在节点中向下面的模式插入注释,但您也可以在任何.NET中使用该逻辑
{
“_id”:ObjectId(“55D58D05471D5CC42AAEF1B”),
“标题”:“如何在MongoDB中删除集合?”,
“作者”:“dp123”,
“身体”:“身体部分开始……”,
“permalink”:“如何在MongoDB中删除集合”,
“标签”:[
“MongoDB”,
“Mongod”,
“mongo”
],
“评论”:[
{
“作者”:“DP”,
“身体”:“太棒了……”,
“电子邮件”:dp@tektak.com"
},
{
“作者”:“约翰”,
“正文”:“这篇文章对我真的很有用。从上周开始我就没有得到解决方案,但最终我得到了。非常感谢!!!”,
“电子邮件”:john@gmail.com"
}
],
“日期”:ISODate(“2015-08-20T08:17:09.541Z”)
}
我们可以在以下网址获得有关$push的详细信息:
**The code snippet is given below:**
var comment = {'author': name, 'body': body};
if (email != "") {
comment['email'] = email;
}
var query ={'permalink': permalink};
var operation ={'$push':{'comments': comment}};
db.collection('posts').update(query, operation, function (err, updated){
console.log("Successfully added the comment!!!");
});