我有两个关于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?
答案 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/
的详细信息