C#MongoDb-正确输出id字段



我不明白在显示对象时如何正确输出id。要么是ObjectId(),我无法解析回对象,要么是某个对象中有id,我可以解析,但看起来很奇怪。

请注意,将它映射到类不是一个选项,它需要完全动态,因为不同的用户有不同的字段。

代码

public List<object> Get()
{
    var client = new MongoClient("mongodb://localhost");
    var server = client.GetServer();
    var database = server.GetDatabase("api_test");
    var collection = database.GetCollection("users");
    var json = collection.FindAllAs<BsonDocument>().ToJson(new JsonWriterSettings { OutputMode = JsonOutputMode.Strict });
    var obj = JsonConvert.DeserializeObject<List<object>>(json);
    return obj;
}

示例

[
    {
        "_id": {
            "$oid": "528e7f9bb1fece903aa9b246"
        },
        "Name": "Steve",
        "Age": 60
    },
    {
        "_id": {
            "$oid": "528e7fabb1fece903aa9b247"
        },
        "Name": "Alice",
        "Age": 44
    }
]

我想要什么

[
    {
        "_id": "528e7f9bb1fece903aa9b246",
        "Name": "Steve",
        "Age": 60
    },
    {
        "_id": "528e7fabb1fece903aa9b247",
        "Name": "Alice",
        "Age": 44
    }
]

您可以通过显式更新查询结果来实现这一点,以便在将_id序列化为JSON:之前将其转换为字符串

var docs = test.FindAll().ToList();
foreach (var doc in docs)
{
    doc["_id"] = doc["_id"].ToString();
}
var json = docs.ToJson(
    new JsonWriterSettings { OutputMode = JsonOutputMode.Strict });

最新更新