C# Mongodb中的字典更新

C# Mongodb中的字典更新,c#,mongodb,dictionary,mongodb-.net-driver,C#,Mongodb,Dictionary,Mongodb .net Driver,我有一个存储以下数据的类: public class User { public ObjectId _id { get; set; } public string Name { get; set; } public string Pass { get; set; } public Dictionary<string, Tuple<string, string>> Quests { get; set; } } 公共类用户 { 公共对象id{

我有一个存储以下数据的类:

public class User
{
    public ObjectId _id { get; set; }
    public string Name { get; set; }
    public string Pass { get; set; }
    public Dictionary<string, Tuple<string, string>> Quests { get; set; }
}
公共类用户
{
公共对象id{get;set;}
公共字符串名称{get;set;}
公共字符串传递{get;set;}
公共字典任务{get;set;}
}
新用户将使用以下命令进行实例化:

await collection.InsertOneAsync(new User { Name = u, Pass = p, 
                     Quests = new Dictionary<string,Tuple<string,string>>() });
wait collection.InsertOneAsync(新用户{Name=u,Pass=p,
Quests=newdictionary()});
我知道如何从创建的文档中查找和提取信息,但我不知道如何推送和保存对文档的更改。大多数在线答案都是针对旧的Mongodb C#驱动程序的,因此像
Query
.save()
之类的东西不存在,或者我没有在程序中包含正确的包


我希望能够在字典中添加和删除条目,然后保存对文档的更改。有什么建议吗?

不知道你到底想要什么。MongoDB中基本上有两种类型的更新:您可以执行原子更新或替换文档

替换文档通常更容易,因为它允许您使用标准C#操作执行修改,并将重新评估生成的属性等:

var user = new User { Name = "John Doe", Quests = 
   new Dictionary<string, Tuple<string, string>> { 
       { "hoho", new Tuple<string, string>("A", "A-Item") } } };
users.InsertOneAsync(user).Wait();
user.Quests = new Dictionary<string, Tuple<string, string>> { 
       { "hoho Modified", new Tuple<string, string>("B", "B-Item") } };
users.ReplaceOneAsync(p => p.Id == user.Id, user);

建议:RTFM:D查找updateOneSyncDoing,以便为我提供元素
与类服务器的任何字段或属性都不匹配。用户:D因此RTFM没有真正的帮助
users.UpdateOneAsync(p => p.Id == user.Id, 
  Builders<User>.Update.Set("Quests.hoho Modified", 
     new Tuple<string, string>("B", "B-Item")));