gpt4 book ai didi

asp.net - 如何使用 ASP.NET Core 更新 mongo Db 集合中的嵌套 JSON 对象字段

转载 作者:行者123 更新时间:2023-12-04 14:49:18 24 4
gpt4 key购买 nike

我在 mongo 集合中有一个像这样的 JSON 对象(Form)

{
"_id": "87124eb6-c9f7-49b9-8470-8c2b7fb07dc8",
"VisitName": "demo visit",
"Version": "string",
"FormStatus": "string",
"FormName": "demo form",
"IsDeleted": false,
"Pages": [
{
"PageName": "demo page",
"PageNo": 1,
"PageStatus": true,
"Field": [
{
"FieldName": "Gender",
"Value": "demo value",
"Comment": "demo comment",
}
]
}
]
}

我需要编辑 Field(这是一个对象数组)。目前,我正在加载完整的表单并替换要更新的字段数据,然后用旧表单替换新表单。

在加载大型表单时,为每个字段更新加载整个表单可能会影响性能有什么方法可以只更新 field 详细信息 fieldName(唯一),而不是获取整个 Form 并进行编辑?

最佳答案

Update: I missed the ASP.NET tag before answering this. I hope, this still gets you to the solution

您可以使用 arrayFilters 的更新.这是一个 playground link对其进行测试。

db.collection.update({
"FormName": "demo form"
},
{
$set: {
"Pages.$[pageItem].Field.$[fieldItem].Value": "new value"
}
},
{
arrayFilters: [
{
"pageItem.PageName": "demo page"
},
{
"fieldItem.FieldName": "Gender"
}
]
})

基本上,您告诉 MongoDB,更新相应数组元素中的嵌套字段,以满足 arrayFilters 指定的过滤器。因此,在这种情况下,您将路径:"Pages.$[pageItem].Field.$[fieldItem].Value" 更新为 新值,但仅限于那些嵌套的文件,即:

  • 驻留在一个名为demo page的页面中
  • 并且,在该页面中,有一个名为Gender
  • 的字段

关于asp.net - 如何使用 ASP.NET Core 更新 mongo Db 集合中的嵌套 JSON 对象字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69316116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com