MongoDb C#驱动程序

时间:2013-07-02 17:42:36

标签: c# mongodb

我有两个关于MongoDb和c#驱动程序的问题,我对no-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类的公司,如果我想添加第三个事件,我是否必须首先获取该对象然后再添加另一个CompanyEvent?

1 个答案:

答案 0 :(得分:0)

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

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

2)你有两个选择

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

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

    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/

的详细信息