sql >> データベース >  >> NoSQL >> MongoDB

フレーズmongodbの複数のオカレンスを置き換える方法

    $ reduce ユースケースにより適しています:

    擬似コード

    value = url.split("_2000x")[0]
    for (item: url.split("_2000x")[1:])
        value += "_850x" + item
    
    db.collection.aggregate([
      {
        $match: {
          imageUrl: {
            $regex: "_2000x"
          },
          brand: "Goat The Label"
        }
      },
      {
        $addFields: {
          imageUrl: {
            $reduce: {
              input: {
                $slice: [
                  {
                    $split: [
                      "$imageUrl",
                      "_2000x"
                    ]
                  },
                  1,
                  {
                    $size: {
                      $split: [
                        "$imageUrl",
                        "_2000x"
                      ]
                    }
                  }
                ]
              },
              initialValue: {
                $arrayElemAt: [
                  {
                    $split: [
                      "$imageUrl",
                      "_2000x"
                    ]
                  },
                  0
                ]
              },
              in: {
                $concat: [
                  "$$value",
                  "_850x",
                  "$$this"
                ]
              }
            }
          }
        }
      }
    ])
    

    MongoPlayground

    編集: Bashシェルを介して実行するには:

    Windows:

    次のコマンドでtemp.jsファイルを作成します:

    db.collection.aggregate(...).forEach(...)
    

    次のコマンドでtemp.batファイルを作成します:

    @echo off
    
    path/to/mongo.exe --uri put_here_mongodb+srv temp.js
    

    次に実行します:temp.bat

    Unix:

    次のコマンドでtemp.jsファイルを作成します:

    db.collection.aggregate(...).forEach(...)
    

    次のコマンドでtemp.batファイルを作成します:

    #!/bin/bash
    
    path/to/mongo --uri put_here_mongodb+srv temp.js
    

    実行権限を付与します:chmod u+x temp.sh
    実行:./temp.sh




    1. ブルーバードとtypescriptのマングースの約束

    2. MongoDBの同じフィールドの複数のドキュメントに条件を適用する

    3. C#ドライバーを使用して、MongoDBの配列のサブドキュメントに含まれる配列のサブドキュメントのフィールドを更新するにはどうすればよいですか?

    4. mongodbへのSQLクエリ?