首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用C# SDK在每个写操作中添加一个json元素到MongoDb?

如何使用C# SDK在每个写操作中添加一个json元素到MongoDb?
EN

Stack Overflow用户
提问于 2020-04-10 17:23:04
回答 1查看 76关注 0票数 0

我目前正在使用C# MongoDB SDK将我的实体写入集合。但是,在每次“写入”到JSON文档时,都需要编写一个json元素。有没有办法做到这一点?

例如:如果我的实体有3个属性A,B,C,在每次将该实体对象写入MongoDb时,我希望追加一个名为"default“的第四个元素,然后将其发送到MongoDb。

因此,最终的文档将是A,B,C,default。

EN

回答 1

Stack Overflow用户

发布于 2020-04-14 05:07:32

在C#驱动程序中没有这样做的通用方法,这很可能是由于执行写入的所有不同方法的复杂性造成的。

最简单的方法是让您的类具有只读的内部属性,并将这些属性映射到Bson类映射中。

代码语言:javascript
运行
复制
class MyObject
{
    public ObjectId Id { get; set; }
    public string A { get; set; }
    public string B { get; set; }
    public string C { get; set; }

    internal string @default { get; } = "Some-Value";
}

BsonClassMap.RegisterClassMap<MyObject>(map =>
{
    map.AutoMap();
    map.MapMember(x => x.@default);
});

var client = new MongoClient();

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

var collection = database.GetCollection<MyObject>("myObjects");

collection.InsertOne(new MyObject
{
    A = "1",
    B = "2",
    C = "3"
});

运行以下命令将创建以下文档。

代码语言:javascript
运行
复制
> db.myObjects.find()
{ "_id" : ObjectId("5e94cdb60e844938a8ae23a1"), "A" : "1", "B" : "2", "C" : "3", "default" : "Some-Value" }

然而,如果你做一个更新,你也必须指定设置这个新的“默认”属性。

代码语言:javascript
运行
复制
collection.UpdateOne(x => x.A == "1", Builders<MyObject>.Update.Set(x => x.B, "10").Set(x => x.@default, "stuff"));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61137366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档