现在我正在使用ASP.NET中的MongoDB,刚刚阅读了一篇文章,其中有一篇博客文章示例,并提到了以下步骤来更新评论(子文档)。
如果是这种情况,让我们采取非常受欢迎的博客方案,其中有数千条评论发布到博客。如果必须发布任何新评论,我们需要将所有现有评论从数据库服务器获取到Web服务器,因此会增加网络流量。
这是一般情况还是有其他方法可以将新内容添加到子文档?意思是,我需要一个只应在现有文档中插入新值的功能。
答案 0 :(得分:0)
MongoDB支持“推送”命令。 push command会将项目附加到现有数组。
答案 1 :(得分:0)
有一个 $ push 运算符,用于将指定的值附加到数组中。假设我们有博客文章的以下架构。帖子中已经有两条评论,如果您想在帖子中添加其他评论,可以使用$ push运算符。我编写了一个示例代码,用于在节点中向下面的模式插入注释,但您也可以在任何.NET中使用该逻辑
{
"_id" : ObjectId("55d58d05471d5cc42aaaef1b"),
"title" : "How to drop a collection in MongoDB?",
"author" : "dp123",
"body" : "body part goes ........!!!",
"permalink" : "How_to_drop_a_collection_in_MongoDB",
"tags" : [
"MongoDB",
"Mongod",
"mongo"
],
"comments" : [
{
"author" : "DP",
"body" : "awesome ......",
"email" : "dp@tektak.com"
},
{
"author" : "John",
"body" : "This article is really useful for me. I am not getting solution since last few week but finally I got it. Thank you very much!!!",
"email" : "john@gmail.com"
}
],
"date" : ISODate("2015-08-20T08:17:09.541Z")
}
**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!!!");
});
我们可以在http://docs.mongodb.org/manual/reference/operator/update/push/
详细了解$ push