1

公式の 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);

ありがとうございました。

4

2 に答える 2

8

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 変数を見て、必要な結果が得られたかどうかを確認できます。

于 2011-02-04T19:39:23.090 に答える
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 を実行したことを確認してください。

于 2011-01-25T08:39:44.097 に答える