首页 > 解决方案 > 如何在 Ravendb 中更新数组中的值?我需要使用查询

问题描述

我有几个文件。下面我只列出两个。如何更新所有文档中“名称字段:StartDate”下方的“值字段”的值?

示例:2019 年 10 月 10 日至 2019 年 9 月 9 日 2019 年 1 月 1 日至 2019 年 9 月 9 日

文件 1:

{
    "IdLoginTwm": 4330,
    "Parametros": [
        {
            "Name": "UserName",
            "Value": "diego.guiando@gmail.com"
        },
        {
            "Name ": "StartDate",
            "Value ": "10/10/2019"
        }
    ]
}  

文件 2:

{
    "IdLoginTwm": 4330,
    "Parametros": [
        {
            "Name": "UserName",
            "Value": "diego.guiando@gmail.com"
        },
        {
            "Name ": "FirstName",
            "Value ": "diego"
        },  
        {
            "Name ": "StartDate",
            "Value ": "01/01/2019"
        }
    ]
}  

谢谢!!

标签: ravendbravenravendb-studioravendb4

解决方案


您可以为此使用 PatchByQueryOperation()。

https://ravendb.net/docs/article-page/4.2/Csharp/client-api/operations/patching/set-based#patching-how-to-perform-set-based-operations-on-documents

补丁脚本应该类似于下面

from Logins
update {
    var res = this.Parametros.filter(x => x.Name == "StartDate")
    if (res.length > 0)
    {
        res.forEach(x => x.Value = 'NULL')
    }
}

推荐阅读