c# - MongoDB InsertBatch JObject - 序列化错误

标签 c# .net mongodb json.net

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

我遇到的错误:

{"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 行引发。

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

谢谢!

最佳答案

你不能将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);

关于c# - MongoDB InsertBatch JObject - 序列化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27471220/

相关文章:

.net - 使用不安全代码的含义是什么

mongodb - 如何删除mongodb ODM中不存在的引用文档

javascript - 计算何时对文件进行多次写入会导致不准确?

node.js - Mongoose - 通过 Id 找到 child

c# - 存储两个日期时间之间的时间跨度

c# - C# 中的未知功能可能只适合我

c# - Entity Framework 4.0,添加不包含主键的SQL Server View

c# - 将值从 opener 传递到弹出窗口并在服务器端处理它,而不是客户端。不能使用 GET

c# - 对具有多个提交的表单进行建模和验证

c# - 调用返回字符串数组的函数