在MongoDB中添加新的子文档

时间:2014-01-22 21:55:44

标签: c# mongodb

我正在尝试将子文档添加到现有文档的列表中。文件如下:

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。

问题是我甚至不知道这是否应该首先添加一个子文档。如果我的方法是正确的,我该怎么做才能解决错误?如果我的方法不正确,我应该怎么做?

1 个答案:

答案 0 :(得分:3)

这个问题是重复的,但由于最初的问题已经过时了,所以答案有点过时了。您不再需要干预手动转换为BsonDocument。相反,您可以使用强类型帮助程序,这对于重构非常有用:

collection.Update(
    Query<EtaMembershipDocument>.EQ(p => p.Id, someId),
    Update<EtaMembershipDocument>.AddToSet
        (p => p.EtaAssociatonDocuments, documentToAdd));

PushWrappedToBsonDocument不同,这将确保您引用的集合实现IEnumerable<T>并且documentToAdd与类型参数{{的类型相同1 {} T