如何添加bsondocuments列表作为bsondocument的元素

atb*_*btg 1 c# mongodb mongodb-.net-driver

如何使用官方c#驱动程序创建以下文档?

{
    "name": "John Doe",
    "classess": [
        {
            "classname": "Class1"
        }
        {
            "classname": "Class2"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

以下代码不起作用

string cs = "mongodb://localhost";
MongoServer server = MongoServer.Create(cs);
MongoDatabase test = server.GetDatabase("test");

MongoCollection<BsonDocument> students = test.GetCollection("students");

BsonDocument doc = new BsonDocument();
doc.Add(new BsonElement("name", "John doe"));

//Create the list
List<BsonDocument> classes = new List<BsonDocument>();
classes.Add(new BsonDocument(new BsonElement("classname","Test1")));
classes.Add(new BsonDocument(new BsonElement("classname","Test2")));
Run Code Online (Sandbox Code Playgroud)

出于明显的原因,以下行将抛出错误.这样做的正确方法是什么?

doc.Add(new BsonElement("classess",classes));
students.Insert(doc);
Run Code Online (Sandbox Code Playgroud)

谢谢.

Rob*_*tam 8

要仅使用BsonDocument类创建该文档,我会写:

        var document = new BsonDocument {
            { "name", "John Doe" },
            { "classes", new BsonArray {
                new BsonDocument("classname", "Class1"),
                new BsonDocument("classname", "Class2")
            }}
        };
        var json = document.ToJson();
Run Code Online (Sandbox Code Playgroud)

此示例使用C#的集合初始化程序语法.

最后一行仅用于调试.你可以查看json变量,看看你是否得到了你想要的结果.