Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MongoDB中更新子文档_Mongodb_Document - Fatal编程技术网

在MongoDB中更新子文档

在MongoDB中更新子文档,mongodb,document,Mongodb,Document,现在,我正在ASP.NET中开发MongoDB,刚刚阅读了一篇文章,其中它以一篇博客文章为例,并提到了以下更新评论(子文档)的步骤 该博客被作为一个主要文件 评论被视为子文档,并与主文档一起发布 当我们需要向特定博客插入新评论时,我们将获取现有的博客文档,在前端添加新评论(子文档),并再次使用博客ID更新博客文档 如果是这样的话,让我们以非常流行的博客场景为例,其中数千条评论被发布到一个博客上。如果必须发布任何新的评论,我们需要将所有现有的评论从DB服务器发送到Web服务器,这样会增加网络流量

现在,我正在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!!!");            
      });