我正在尝试将子文档添加到现有文档的列表中。文件如下:
public class EtaMembershipDocument : DocumentBase
{
public List<EtaAssociationDocument> EtaAssociatonDocuments { get; set; }
}
我不知道如何使用C#和MongoDB将新的EtaAssociationDocument
添加到列表中。这是我最近的尝试:
var collection = this.DataStore.GetCollection<EtaMembershipDocument>(EtaMembershipsCollectionName);
Update.AddToSet("EtaAssociationDocuments", BsonValue.Create(etaAssociationDocument));
在最后一行,我收到此错误:
.NET类型EtaAssociationDocument无法映射到BsonValue。
问题是我甚至不知道这是否应该首先添加一个子文档。如果我的方法是正确的,我该怎么做才能解决错误?如果我的方法不正确,我应该怎么做?
答案 0 :(得分:3)
这个问题是重复的,但由于最初的问题已经过时了,所以答案有点过时了。您不再需要干预手动转换为BsonDocument
。相反,您可以使用强类型帮助程序,这对于重构非常有用:
collection.Update(
Query<EtaMembershipDocument>.EQ(p => p.Id, someId),
Update<EtaMembershipDocument>.AddToSet
(p => p.EtaAssociatonDocuments, documentToAdd));
与PushWrapped
和ToBsonDocument
不同,这将确保您引用的集合实现IEnumerable<T>
并且documentToAdd
与类型参数{{的类型相同1 {} T
。