MongoDB InsertBatch JObject - 序列化错误

时间:2014-12-14 16:14:26

标签: c# .net mongodb json.net

我正在使用.NET应用程序并尝试插入MongoDB。 我正在使用InsertBatch并传递给它的IEnumerable of Newtonsoft.Json.Linq.JObject

我得到的错误:

{"Serializer DictionarySerializer<String, JToken> expected serialization options of type DictionarySerializationOptions, not DocumentSerializationOptions."}

我的代码是:

private void InsertItemsToMongo(IEnumerable<JObject> list)
{
    MongoClient = new MongoClient("mongodb://localhost:27017");
    var myDb = mongo.GetServer().GetDatabase("MyDatabase");
    if (!myDb.CollectionExists("MyStuff");
        myDb.CreateCollection("MyStuff");

    MongoCollection<JObject> myCollection = myDb.GetCollection<JObject>("MyStuff");
    myCollection.InsertBatch(list);
}

在InsertBatch行抛出错误。

如果您需要提供任何其他信息,我提供了我认为相关的信息。

谢谢!

1 个答案:

答案 0 :(得分:1)

您无法将JObject插入mongo,您必须将其转换为BsonDocument

var bsonlist = new List<BsonDocument>();
foreach (var obj in list)
{
    bsonlist.Add(BsonDocument.Parse(obj));
}

var myCollection = database.GetCollection("MyStuff");
var doc = BsonArray.Create(bsonlist);
myCollection.InsertBatch(doc);