database - 如何有效地更新 mongodb 记录的一部分?
问题描述
在 mongodb 中,如果我有这样的用户记录
{
_id:1,
name:"John",
items : [
{wid:1, type:"basic"},
{wid:1, type:"rare"}
]
}
我想更新 to 的rare
名称uncommon
。我怎样才能有效地做到这一点?我担心的是,如果该数组的长度为 100 万,当我添加、更新或删除某些内容时,我是否需要在更新调用中推送那个巨大的数组(其中包括其中某处的新更新)?有没有一种方法可以提高效率,只推动增量变化?
谢谢
解决方案
我想将稀有的名称更新为不常见
你可以这样做。在您的示例中,您可以传入type:rare
条件并用于arrayFilters
更新。
使用 arrayfilters 批量查找以仅更新需要更新的内容
db.collection.update(
{ <query selector> },
{ <update operator>: { "array.$[<identifier>].field" : value } },
{ arrayFilters: [ { <identifier>: <condition> } } ] }
)
当我从中添加、更新或删除某些内容时,我是否需要在更新调用中推送那个巨大的数组(其中包括新的更新)?
不必要。您可以按照上面的说明进行更新。
您可以使用$push
.
您可以使用删除$pull
。
推荐阅读
- mongodb - 在 go 中更新 MongoDB 数组字段
- java - JCIP 取消上市 7.18 毒丸
- python - 无法在循环中读取打开的 cv 中保存的视频
- javascript - 如何使用 NestJS 命名法为猫鼬写下嵌套模式
- node.js - UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性'findIndex'.....在我的NODEJS项目中
- java - 使用 Spring Boot JPA 从 mysql 数据库获取 JSONArray
- html - 如何在 Kibana 中更改徽标?
- c++ - 如何访问链式变量的返回值
- python - 如何使用 python 使用 selenium 处理 Google 表单的下拉列表
- javascript - 当我有一个锚标记引用同一页面中的另一个部分时,如何使它不立即显示我点击它