将一对字符串坐标转换为 MongoDB 中的几何数据类型

Convert a string pair of coordinates to geomtery data type in MongoDB

我在 MongoDB 集合中有一列,其位置存储为字符串对值: 几何:“点(72.548355 23.042458)”

我需要创建一个与 MongoDB 的空间查询一起使用的几何字段。这种格式的东西:

“几何”:{ “类型”:“点”, “坐标”:[72.548355, 23.042458] },

请帮忙。对于集合中的数十亿个条目,我需要 运行 这个。因此,优化的解决方案将非常有帮助。提前致谢

db.collection.update({},
[
  {
    "$set": {
      "geometry": {
        $let: {
          vars: {
            "arr": { $split: [ "$geometry", " " ] }
          },
          in: {
            "type": { 
              $concat: [
                { $toUpper: { $substr: [ { $first: "$$arr" }, 0, 1 ] } },
                { $toLower: { $substr: [ { $first: "$$arr" }, 1, { $strLenCP: { $first: "$$arr" } } ] } }
              ] 
             },
            "coordinates": [
              {
                $toDouble:{
                  $ltrim: {
                    input: { $arrayElemAt: [ "$$arr", 1 ] },
                    chars: "("
                  }
                }
              },
              {
                $toDouble:{
                  $rtrim: {
                    input: { $arrayElemAt: [ "$$arr", 2 ] },
                    chars: ")"
                  }
                }
              }
            ]
          }
        }
      }
    }
  }
],
{ "multi": true })

mongoplayground