MongoDB错误:尝试插入List <string> </string>时,“子类必须实现GetDocumentID”

时间:2012-04-13 16:09:27

标签: c# mongodb

我正在尝试添加一个简单的字符串列表:

string[] misc = {"a", "b", "c", "d"};
List<string> myList = new List<string>(misc);
mongo_collection.Insert(myList);

它将返回错误:“Subclass必须实现GetDocumentID”

我尝试了这个:

mongo_collection.InsertBatch(myList);

但它导致了同样的错误。必须有一种方法来插入它而不创建一个继承自实现GetDocumentID的List的新类,对吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

您正在尝试将类型为String的List放入mongo数据库中。为了向Mongo添加内容,它必须是Bson对象,或者您必须创建自定义对象,并映射属性以便Mongo知道如何将对象转换为BSON。

答案 1 :(得分:1)

插入集合的顶级对象必须是映射到BSON文档(而不是BSON数组)的对象。

此外,顶级对象必须始终具有Id字段(映射到名为_id的元素)。

要将数据插入数据库,您可以定义类似这样的类:

public class C
{
    public ObjectId Id;
    public List<string> Strings;
}

然后你可以插入这样的数据:

var document = new C();
document.Strings = new List<string> { "a", "b", "c", "d" };
collection.Insert(document);

请注意,Id将自动分配一个值(只要Id的类型为ObjectId,支持自动生成唯一值)。