0

我正在尝试删除我的数据 Product 然后是图像上的字符串,因为我有重复的值。

db={
  "Product": [
    {
      "images": [
        {
          id: 1,
          URL: "https://stackoverflow.com/questions/ask.png"
        },
        {
          id: 2,
          URL: "https://stackoverflow.com/questions/ask100?=view.png"
        },
        {
          id: 3,
          URL: "https://stackoverflow.com/questions/ask101.png.png"
        }
      ]
    }
  ]
}

这是我当前用于聚合的实现,但它不会更新我的任何字段。

db.Product.aggregate([
  {
    $project: {
      id: 1,
      "images": {
        $map: {
          input: "$images",
          as: "i",
          in: {
            "$mergeObjects": [
              "$$i",
              {
                $arrayElemAt: [
                  {
                    "$split": [
                      "$URL",
                      ".png"
                    ]
                  },
                  0
                ]
              }
            ]
          }
        }
      }
    }
  }
])

预期输出:

"images": [
        {
          id: 1,
          URL: "https://stackoverflow.com/questions/ask"
        },
        {
          id: 2,
          URL: "https://stackoverflow.com/questions/ask100?=view"
        },
        {
          id: 3,
          URL: "https://stackoverflow.com/questions/ask101"
        }
      ]
    }

当我在上面运行聚合时,它什么也不做。

4

1 回答 1

0

中的$URL参考$split是错误的。

[{"$project"=>
   {"id"=>1,
    "urls"=>
     {"$map"=>
       {"input"=>"$images.url",
        "in"=>{"$arrayElemAt"=>[{"$split"=>["$$this", ".png"]}, 0]}}}}}]

[{"_id"=>BSON::ObjectId('60010e39489668464a1340bd'),
  "urls"=>
   ["https://stackoverflow.com/questions/ask",
    "https://stackoverflow.com/questions/ask100?=view",
    "https://stackoverflow.com/questions/ask101"]}]
[{"$set"=>
   {"images"=>
     {"$map"=>
       {"input"=>"$images",
        "in"=>
         {"$mergeObjects"=>
           ["$$this",
            {"url"=>
              {"$arrayElemAt"=>[{"$split"=>["$$this.url", ".png"]}, 0]}}]}}}}}]

[{"_id"=>BSON::ObjectId('6001104b4896684715b8947b'),
  "images"=>
   [{"id"=>1, "url"=>"https://stackoverflow.com/questions/ask"},
    {"id"=>2, "url"=>"https://stackoverflow.com/questions/ask100?=view"},
    {"id"=>3, "url"=>"https://stackoverflow.com/questions/ask101"}]}]
于 2021-01-15T02:49:09.773 回答