我目前正在使用C# MongoDB SDK将我的实体写入集合。但是,在每次“写入”到JSON文档时,都需要编写一个json元素。有没有办法做到这一点?
例如:如果我的实体有3个属性A,B,C,在每次将该实体对象写入MongoDb时,我希望追加一个名为"default“的第四个元素,然后将其发送到MongoDb。
因此,最终的文档将是A,B,C,default。
发布于 2020-04-14 05:07:32
在C#驱动程序中没有这样做的通用方法,这很可能是由于执行写入的所有不同方法的复杂性造成的。
最简单的方法是让您的类具有只读的内部属性,并将这些属性映射到Bson类映射中。
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"
});运行以下命令将创建以下文档。
> db.myObjects.find()
{ "_id" : ObjectId("5e94cdb60e844938a8ae23a1"), "A" : "1", "B" : "2", "C" : "3", "default" : "Some-Value" }然而,如果你做一个更新,你也必须指定设置这个新的“默认”属性。
collection.UpdateOne(x => x.A == "1", Builders<MyObject>.Update.Set(x => x.B, "10").Set(x => x.@default, "stuff"));https://stackoverflow.com/questions/61137366
复制相似问题