为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 MongoDB C# 客户端驱动程序将复杂的嵌套 JSON 数据结构保存到

如何使用 MongoDB C# 客户端驱动程序将复杂的嵌套 JSON 数据结构保存到

C#
呼唤远方 2022-06-12 10:47:07
我有一个复杂的嵌套 JSON 数据结构,下面保存在文件 data.json 中。减少了数据结构,但这将适用于所有 json 数据结构。我将 json 读取并反序列化为 C# 模型。然后我使用 MongoDB C# 客户端驱动程序将对象/数据写入 MongoDB 你如何将这个复杂的对象/数据/模型保存到 MongoDB?复杂的嵌套数据结构,data.json 文件    [      {        "property_1": "value_1",        "property_2": "value_2",        "property_3": {          "_some_property_1": 1,          "_some_property_2": "some_value_2",          "some_property_3": "some_value_3",          "some_property_4": "some_value_4"        },        "property_4": "value_4",        "property_5": "value_5",        "iproperty_6": "Nvalue_6",        "property_7": "value_7",        "property_8": "value_8",        "property_9": "value_9"      }    ]C# ASP.NET Web Api 演示代码    namespace DemoWebApi.Controllers    {        public class ValuesController : ApiController        {            // GET api/values            public void Get()            {                var models = CreateModels();                var client = new MongoClient("mongodb://localhost:27017/admin");                var database = client.GetDatabase("TestDB");                /*                THIS DOES NOT WORK                    IMongoCollection<MODEL> collection = database?.GetCollection<MODEL>("TestCollection");                                collection.InsertMany(models);               */            }
查看完整描述

1 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

在队友的帮助下,这行得通。将您的模型序列化BsonDocument并传递BsonDocument给 MongoDB C# 驱动程序插入方法。通过这种方式,您可以使用您的 C# POCO 对象,直到您想要将其持久化到 MongoDB,然后您将其序列化为BsonDocument数组或BsonDocument保存它。因为这个复杂的模型BsonDocument[]解决了我的问题


用这个形状和结构保存一个复杂的json模型,比下面这个形状和结构复杂到MongoDB


//Complex json collection/array shape and structure to save as is in MongoDB


    [

      {

        "property_1": "value_1",

        "property_2": "value_2",

        "property_3": {

          "_some_property_1": 1,

          "_some_property_2": "some_value_2",

          "some_property_3": "some_value_3",

          "some_property_4": "some_value_4"

        },

        "property_4": "value_4",

        "property_5": "value_5",

        "iproperty_6": "Nvalue_6",

        "property_7": "value_7",

        "property_8": "value_8",

        "property_9": "value_9"

      }

    ]






// This works - code snippets

 /*Create a collection of C# POCO from for the json.

 // My assumption is you can create C# objects/collections from complex json shape and structure

 //   Serialize to MongoDB BsonDocument and save*/


        var models = new List<Model>{ new Model()}; // Create C# collection from json

        string text = JsonConvert.SerializeObject(models);

        var bsonDocument = BsonSerializer.Deserialize<BsonDocument[]>(text);

        var client = new MongoClient("mongodb://localhost:27017/admin");

        var database = client.GetDatabase("TestDB");

        IMongoCollection<BsonDocument> collection = database?.GetCollection<BsonDocument>("TestCollection");

        collection.InsertMany(bsonDocument);


查看完整回答
反对 回复 2022-06-12
  • 1 回答
  • 0 关注
  • 359 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号