我有下面的类图
public class Blog
{
public Guid BlogId { get; set; }
public string BlogName { get; set; }
public List<DiscussionPanel> DiscussionPanel { get; set; }
public List<Comment> Comments { get; set; }
}
public class DiscussionPanel
{
public Guid DiscussionPanelId { get; set; }
public string DiscussionPanelName { get; set; }
public Guid CommentId { get; set; }
}
public class Comment
{
public Guid CommentId { get; set; }
public string CommentDesc { get; set; }
}
第一次,我将创建一个Blog集合,其中DiscussionPanel和Comments为空列表。当用户在“讨论”面板下输入评论时,这些评论将在嵌入式文档“评论”中更新,并且我必须获取插入的ID作为评论并存储到“讨论”面板集合中。我正在使用MongoDB c#驱动程序。我该如何实现?
我可以使用Update.Push
命令将注释插入内部文档中。但是我无法获取插入文档的ID。
提前感谢所有答案。
答案 0 :(得分:0)
您可以生成一个ObjectId
并将其分配给新的comment
:
public static ObjectId AddComment(ObjectId blogId)
{
var comment = new Comment
{
Id = ObjectId.GenerateNewId(),
CommentDesc = "My comment description"
};
var context = new Context();
var builder = Builders<Blog>.Filter;
var filter = builder.Eq(x => x.Id, blogId);
var update = Builders<Blog>.Update
.Push(x => x.Comments, comment);
var updateResult = context.Blog.UpdateOne(filter, update);
return comment.Id;
}
您还可以获取已修改文档的数量,以确保插入了注释:
var modified = updateResult.ModifiedCount;
if (modified != 0)
{
// something was updated
}