2012-12-30 32 views
2

如何更新<字节的表示形式,字符串> BSON文档中的Dictionary属性?我不明白如何使用BSON类型。该对象使用自动BSON序列化进行存储,我想要替换整个Dictionary。如何更新MongoDB中的<字节,字符串>字典文档

比方说,我们已经得到了这个类:

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); 
+0

请尝试搜索关于BSON文档的[mongoDB手册](http://docs.mongodb.org/manual/core/document/)。 – 2012-12-30 16:21:39

+0

我没有时间告诉你,可以在这里找到anwser:http://docs.mongodb.org/manual/core/document/ – 2012-12-30 16:25:58

+0

我有点困惑:这里有什么问题?此代码(以及下面的其他评论中的代码)是否运行?当你运行它会发生什么? – ACE

回答

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); 
+0

有点迟了,但'SetWrapped'我相信会带一个非mongo对象并自动执行所有的映射。可能已经能够做你想在这里,但我假设一年半后,它可能已经很久没有忘记...留在这里为下一个人,虽然遇到了这个问题。 – Chris

相关问题