1

我有两个关于 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)。如何确保“符号”属性是集合中的唯一约束?在添加新公司之前,我是否必须编写自己的代码进行检查?

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

4

1 回答 1

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)你有2个选择

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

  • 将 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/

于 2013-07-02T18:32:27.473 回答