MongoDB将注释保存到嵌套数组

时间:2012-05-13 20:34:37

标签: mongodb mongodb-.net-driver

我是C#和MongoDB的新手,并且在使用在线存储库模式(http://www.primaryobjects.com/cms/article137.aspx)插入/更新/储存项目时遇到了一些问题。这是一些代码:

型号:

public class BlogModel
{
    [BsonId]
    public ObjectId Id { get; set; }
    public DateTime Date { get; set; }
    [Required]
    public string Title { get; set; }
    [Required]
    public string Body { get; set; }
    public string Author { get; set; }
    public IList<CommentModel> Comments { get; set; }
}

public class CommentModel
{
    [BsonId]
    public ObjectId Id { get; set; }
    public DateTime Date { get; set; }
    public string Author { get; set; }
    [Required]
    public string Body { get; set; }
}

存储库模式:

public void Add<T>(T item) where T : class, new()
{
    _db.GetCollection<T>().Save(item);
}

public void Add<T>(IEnumerable<T> items) where T : class, new()
{
    foreach (T item in items)
    {
        Add(item);
    }
}

如何使用“添加”类向嵌套数组添加注释?

1 个答案:

答案 0 :(得分:0)

使用此存储库模式,将有四个步骤:

  1. 实例化 BlogModel
  2. 类型的存储库
  3. 检索要添加注释的文档
  4. 在文档中添加注释
  5. 将文档保存回集合。
  6. 这样的事情:

    var myRepository = new Repository<BlogModel>();
    var myDocument = myRepository.Find(some_id);    // retrieve BlogModel document to update
    myDocument.Comments.Add(some_new_comments);    // add to IList
    myRepository.Add(myDocument);     // save changes to the document back to the repository
    

    请注意,由于添加存储库方法使用C#驱动程序保存方法,因此它实际上具有insert or update的功能。在这种情况下,您将没有 CommentModel 的存储库,因为它充当嵌入在 BlogModel 文档中的文档数组。