如何使用官方c#驱动程序创建以下文档?
{
"name": "John Doe",
"classess": [
{
"classname": "Class1"
}
{
"classname": "Class2"
}
]
}
以下代码不起作用
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")));
以下行会因为显而易见的原因而抛出错误。这样做的正确方法是什么?
doc.Add(new BsonElement("classess",classes));
students.Insert(doc);
谢谢。
答案 0 :(得分:7)
要仅使用BsonDocument类创建该文档,我会写:
var document = new BsonDocument {
{ "name", "John Doe" },
{ "classes", new BsonArray {
new BsonDocument("classname", "Class1"),
new BsonDocument("classname", "Class2")
}}
};
var json = document.ToJson();
此示例使用C#的集合初始值设定语法。
最后一行仅用于调试。你可以查看json变量,看看你是否得到了你想要的结果。
答案 1 :(得分:1)
假设您有以下课程:
public class NestedClass
{
public string ClassName {get;set;}
}
public class Person
{
public Person()
{
Classes = new List<NestedClass>();
}
[BsonId]
public string PersonId {get;set;}
public string Name {get;set;}
public List<NestedClass> Classes {get;set;}
}
你需要:
创建要保存的类的实例并初始化
var person = new Person(){PersonId = Guid.NewGuid().ToString(), Name = "Some name"};
person.Classes.Add(new NestedClass(){ ClassName="classname1"})
person.Classes.Add(new NestedClass(){ ClassName="classname2"})
比
var server = MongoServer.Create("mongodb://localhost:27020");
MongoDatabase test = server.GetDatabase("test");
MongoCollection students = test.GetCollection<Person>("students");
students.Insert(person.ToBsonDocument()); // it will automatically serialize and insert person
还要确保你已经运行了mongodb。