如何更新MongoDB文档中的字典

本文关键字:MongoDB string 文档 字典 byte 何更新 更新 | 更新日期: 2023-09-27 17:49:53

如何更新<byte,string>BSON文档中的字典属性?我不知道如何使用BSON类型。对象是使用自动BSON序列化存储的,我想替换整个Dictionary。

假设我们有这样一个类:

public class Message  
{
    public string Text {get;set;}
    public Dictionary<byte, string> Contents {get;set;}
}  

在MongoDB中它看起来像这样的消息集合:

{
  _id :  12345,
  Text : "This is a text",
  Contents: [ [1 : "true"], [3 : "youtube"] ]
}   

更新应该是这样的

var query = Query.EQ("_id", messageId);
var update = Update.Set("Contents", -> how to build me?);
MessageCollection.Update(query, update);

如何更新<byte, string>MongoDB文档中的字典

我现在正在序列化完整的消息对象,然后将字典部分取出以进行更新。

var messageDoc = new BsonDocument();
var bsonWriter = BsonWriter.Create(messageDoc);
BsonSerializer.Serialize<Message>(bsonWriter, message);
var query = Query.EQ("_id", messageId);
var update = Update.Set("Contents", messageDoc["Contents"]);
MessageCollection.Update(query, update);