4

如何更新 BSON 文档中 <byte,string> 字典属性的表示形式?我不知道如何使用 BSON 类型来做到这一点。该对象是使用自动 BSON 序列化存储的,我想替换整个字典。

假设我们有这个类:

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);
4

1 回答 1

1

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

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);
于 2012-12-31T13:50:55.587 回答