C# MongoDB错误:";子类必须实现GetDocumentID";尝试插入列表时<;字符串>;

C# MongoDB错误:";子类必须实现GetDocumentID";尝试插入列表时<;字符串>;,c#,mongodb,C#,Mongodb,我试图添加一个简单的字符串列表: string[] misc = {"a", "b", "c", "d"}; List<string> myList = new List<string>(misc); mongo_collection.Insert(myList); 但这也导致了同样的错误。必须有一种方法来插入它,而不创建从实现GetDocumentID的列表继承的新类,对吗 谢谢 您正试图将字符串类型列表放入mongo数据库。要向Mongo添加内容,它必须是Bson对

我试图添加一个简单的字符串列表:

string[] misc = {"a", "b", "c", "d"};
List<string> myList = new List<string>(misc);
mongo_collection.Insert(myList);
但这也导致了同样的错误。必须有一种方法来插入它,而不创建从实现GetDocumentID的列表继承的新类,对吗


谢谢

您正试图将字符串类型列表放入mongo数据库。要向Mongo添加内容,它必须是Bson对象,或者您必须创建一个自定义对象,并映射属性,以便Mongo知道如何将对象转换为Bson。

插入集合的顶级对象必须是映射到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);
公共C类
{
公共对象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);
var document=newc();
字符串=新列表{“a”、“b”、“c”、“d”};
收款。插入(文件);

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

为什么您认为必须有这样的方法?将字符串列表放入
mongo_集合
后,您将如何检索该列表?我认为它将在我的文档中创建一个子列表(对不起,我的mongodb术语知识库仍然是绿色的)。为了补充答案,您需要创建一个BsonDocument并在其中添加一个BsonArray(带有相应的键)。您可以参考文档了解更多详细信息: