我正在try 对嵌套文档中字段的值进行$修剪,但我一直无法弄清楚如何使其工作.

我想在所有文档的code字段上运行$trim,以便从MongoDB中静止的文档中删除前导空格和尾随空格.

我正在使用MongoDB 4.2.

我的文档 struct 如下:

{
   "_id": "root_id",
   "products": [
      {
         "id": "p1",
         "code": "TRAILING "
      },
      {
         "id": "p2",
         "code": " LEADING"
      }
      {
         "id": "p3",
         "code": "CLEAN"
      }
   ]
}

推荐答案

您可以为MongoDB 4.2版使用Updates with Aggregation Pipeline.

  1. $set-设置products字段值.

    1.1.$map-迭代products数组并返回一个新array.

    1.1.1. $mergeObjects-将当前对象($$this)和对象与1.1.1.1中的code字段合并.

    1.1.1.1.$trim-微调code值.

{ multi: true }用于更新多个文档.

db.collection.update({},
[
  {
    $set: {
      products: {
        $map: {
          input: "$products",
          in: {
            $mergeObjects: [
              "$$this",
              {
                code: {
                  $trim: {
                    input: "$$this.code"
                  }
                }
              }
            ]
          }
        }
      }
    }
  }
],
{
  multi: true
})

Sample Mongo Playground

Mongodb相关问答推荐

如何拉平mongo DB中的对象并在根目录中保存时有条件地重命名字段?

在一个视图中连接两个集合MongoDB;展开有什么作用?

如何在MongoDB中通过限制和跳过查找项进行匹配

MongoDB:如何从数组中的所有对象中删除属性?

从具有多个数组匹配 MongoDB 的两个集合中采样数据

如何使用 MindsDB 和 MQL(对于我的 MongoDB 实例)实施零样本分类?

MongoDB - 分组并找到前 N 个

替换 MongoDB 中数组中的嵌入文档

使用 MongoDb 处理迁移

从 MongoDB find() 结果集中识别最后一个文档

Mongo:统计一组文档中单词出现的次数

$lookup 结果 mongodb 的计数

Mongo DB中的Upserting和Id问题

从 mongodb 中的副本配置重新开始

嵌套在文档数组中的mongodb展开数组

如何使用 Node.js 和 mongoose 解决command find requires authentication?

Ruby 按键值分组哈希

我们如何使用spring boot为mongodb创建自动生成的字段

如何从集合中删除除 MongoDB 中的文档之外的所有文档

Mongodb Compass 无法在 Ubuntu 18.10 中打开