0

我怀疑是否可以将 BsonDocument 结果的集合序列化为 json 键对象对。

例如,我附上了一段代码,它创建了一个 BsonDocument 集合,其中 _id 和 name 作为字段,

using MongoDB.Bson;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ExampleBsonDocumentSerializeToJsonAsArray
{
    class Program
    {
        static void Main(string[] args)
        {
            BsonDocument[] data = new BsonDocument[]{

                new BsonDocument {
                        { "_id" , "1" },
                        { "name" , "name_1" },
                        { "description" , "description_1" },
                }
                ,new BsonDocument {
                        { "_id" , "2" },
                        { "name" , "name_2" },
                        { "description" , "description_2" },
                }
                ,new BsonDocument {
                        { "_id" , "3" },
                        { "name" , "name_3" },
                        { "description" , "description_3" },
                }
            };

            Console.WriteLine(data.ToJson());
        }
    }
}

清单 1.1

显示的列表 1.1 中的部分,它以 json 对象数组的形式提供输出,

[{
    "_id": "1",
    "name": "name_1",
    "description": "description_1"
}, {
    "_id": "2",
    "name": "name_2",
    "description": "description_2"
}, {
    "_id": "3",
    "name": "name_3",
    "description": "description_3"
}]

将字段“_id”作为集合的键,我想序列化为一组键对象 json 而不是对象数组。序列化json的结果应该是这样的,

{
    "1": {
        "name": "name_1"
      , "description": "description_1"
    },
    "2": {
        "name": "name_2"
      , "description": "description_2"
    },
    "3": {
        "name": "name_3"
      , "description": "description_3"
    }
}

我不知道这是否可能

4

1 回答 1

1

您可以转换BsonDocumentDictionaryvia System.Linq

using System.Linq;
var kvp = data.AsEnumerable()
    .ToDictionary(x => x["_id"], x => new { name = x["name"], description = x["description"] });
        
Console.WriteLine(kvp.ToJson());

示例程序

于 2021-11-10T00:23:13.387 回答