【发布时间】:2018-02-08 23:29:15
【问题描述】:
我正在尝试将提供给 API 的任何 JSON 存储到 BsonDocument 中,这是使用 C# 驱动程序的另一个文档上的字段
但是,当我尝试使用 UpdateOne 方法时,它只是将文档替换为我提交的任何内容。这是我的顶级 mongo 文档
public class SomeMongoDocument
{
public ObjectId _id { get; set; }
public string FileName { get; set; }
public BsonDocument Metadata { get; set; }
}
我想先设置 Metadata 属性,然后再更新它,更新可能不包含所有发送的初始 Metadata。所以当我尝试用这个更新文档时:
public void UpdateMetadata(string filename, string metadata)
{
var filter = Builders<SomeMongoDocument>.Filter.Eq(e => e.FileName, filename;
BsonDocument document = BsonSerializer.Deserialize<BsonDocument>(metadata);
var update = Builders<SomeMongoDocument>.Update.Set(e => e.Metadata, document);
this.MongoCollection.UpdateOne(filter, update);
}
当我将它转换为 bson 文档时,它只是覆盖 BsonDocument 并删除字符串中不存在的属性。
那么我该怎么做:
更新现有属性,或在添加新属性时保留已有的属性。谢谢
【问题讨论】:
标签: c# mongodb mongodb-query mongodb-.net-driver