mongodb - 如何在 MongoDB 中将我的所有文本 _id 字段从“abc”更新为“xxx#abc”
问题描述
我有一个集合,其中_id
是一个文本字段。我需要通过添加前缀来更新这个字段,比如xxx#,所以如果一个字段值是“ abc ”它现在必须是“ xxx#abc ”
我怎么能用 MongoDB 做到这一点?
解决方案
由于_id
MongoDB 文档中的字段是不可变的,因此不能使用.update()
's 执行此操作。由于您需要更新所有文档,请尝试使用聚合的$out阶段重写整个集合:
db.collection.aggregate([{$addFields : {_id : {$concat : ['xxx#','$_id']}}}, {$out : 'collection'}])
注意:因为$out
实际上将替换现有集合(或者如果集合不存在给定名称,则创建新集合),非常好地测试此查询,即;在没有阶段的情况下测试此聚合查询$out
,如果一切看起来都不错,则应用$out
。以其他方式,一旦您认为一切正常,您就可以写入新集合并重命名集合名称。此外,如果您使用的是 MongoDB 版本 >= 4.2
,您可以利用$merge。
推荐阅读
- javascript - React Native,组件未关闭
- javascript - 如果匹配条件,则在对象数组中添加键
- android - 无法获取未知属性“manifestOutputDirectory”
- sql-server - 将xml中的数据提取到SQL Server表中
- virtualbox - 在 CentOS 8 上为 VirtualBox 安装内核头文件
- java - 从动作监听器设置按钮的文本
- android - 如何在 Android Studio 中为三星 Galaxy Note plus 和 Google Pixel XL3 创建单独的值文件夹
- julia - 通过数组维度广播
- django - 如何加密身份验证模型中的 django 用户名字段?
- pandas - 将 Pandas 浮点格式从点更改为逗号