MongoDb C#驱动程序

本文关键字:驱动程序 MongoDb | 更新日期: 2023-09-27 18:20:48

我对MongoDb和c#驱动程序有两个问题,我对无sql概念还很陌生:

考虑以下类别:

public class Company
{
    public ObjectId Id { get; set; }
    public DateTime CreateDate { get; set; }
    public string Symbol { get; set; }
    public string Name { get; set; }
    public IEnumerable<CompanyEvent> CompanyEvents {get;set;}
}

1) 。如何确保"Symbol"属性是集合中的唯一约束?在添加新公司之前,我是否必须编写自己的代码进行检查?

2) 。比方说,我在集合中添加了一个有2个CompanyEvent类的公司,如果我想添加第三个事件,我是否必须先获取对象,然后再添加另一个CompanyEvents?

MongoDb C#驱动程序

1)您可以使用唯一索引:http://docs.mongodb.org/manual/core/indexes/#unique-索引

  var index = new IndexKeysBuilder<Company>();
  index.Ascending(c => c.Symbol);
  Collection.EnsureIndex(index, new IndexOptionsBuilder().SetUnique(true));

2) 你有两个选项

  • 从数据库中读取公司对象,添加CompanyEvent,将公司对象保存到数据库

  • 将CompanyEvent对象推送到数据库中的CompanyEvents数组

    Collection.Update(
      Query<Company>.EQ(e => e.Id, id),
      Update<Company>.Push(e => e.CompanyEvents, new CompanyEvent()));
    

有关推送操作员的更多信息http://docs.mongodb.org/manual/reference/operator/push/