C# 更新RavenDB文档中的字段

C# 更新RavenDB文档中的字段,c#,json,ravendb,C#,Json,Ravendb,你好 我有一个RavenDB JSON文档,其中一个字段(“Info”)包含如下字符串: "{\"value1\":\"9\", \"value2\": \"dog\", ....}" 我想删除转义的“\”字符,以便RavenDB将其识别为JSON列表 但是,我已经尝试使用更新文档 newString=oldString.Replace(“\\”,”) newString=oldString.Replace(@“\”,“”) 和newString=oldString.Trim(新字符[]{@“

你好

我有一个RavenDB JSON文档,其中一个字段(“Info”)包含如下字符串:

"{\"value1\":\"9\", \"value2\": \"dog\", ....}"
我想删除转义的
“\”
字符,以便RavenDB将其识别为JSON列表

但是,我已经尝试使用更新文档

newString=oldString.Replace(“\\”,”)

newString=oldString.Replace(@“\”,“”)

newString=oldString.Trim(新字符[]{@“\”})

但它不起作用。应用上述方法后,字符串看起来没有变化

请参阅下面的完整代码:

            while(true)
            {
                var result = session.Query<Documents>()
                    .Take(1000).Skip(i)
                    .ToList();
                if (result.Count == 0)
                    break;

                foreach (var r in result)
                {
                    string rInfo = r.Info.ToString();
                    rInfo = rInfo.Replace("\\", "");

                    PATCHED_Doc r_Doc = new PATCHED_Doc()
                    {
                        Info = rInfo, 
                        Value = "test",
                        Id = r.Id,
                        Date = r.Date,
                    };

                    session.Store(r_Doc);
                    session.SaveChanges();

                }

                session.SaveChanges();

                i += result.Count;
            }



public class PATCHED_Doc
{
    public string Info { get; set; }
    public string Value { get; set; }
    public int Id { get; set; }
    public string Date { get; set; }
}
while(true)
{
var result=session.Query()
.取(1000)。跳过(i)
.ToList();
如果(result.Count==0)
打破
foreach(结果中的var)
{
string rInfo=r.Info.ToString();
rInfo=rInfo.Replace(“\\”,”);
补丁文档r\u Doc=新补丁文档()
{
Info=rInfo,
Value=“测试”,
Id=r.Id,
日期=r.日期,
};
会话存储(r_Doc);
session.SaveChanges();
}
session.SaveChanges();
i+=结果计数;
}
公共类补丁文件
{
公共字符串信息{get;set;}
公共字符串值{get;set;}
公共int Id{get;set;}
公共字符串日期{get;set;}
}

提前感谢您的帮助。

您需要将JSON解析为一个对象,然后将其交给Raven DB。字符串被视为字符串。使用库来创建。将“信息”属性更改为对象的类型。然后将匿名对象分配给Info属性。

请发布完整代码。您是否注意到无法在.NET中更改字符串?它们是不变的。你需要创建一个新的。您调用的方法正是这样做的,您可能没有正确使用返回值。@nvoigt编辑了我的问题。希望这能让事情更清楚。谢谢。使用Newtonsoft.Json.Linq解析字符串。但是,Json对象在RavenDB中似乎没有正确保存。看见