将一对字符串坐标转换为 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 })
我在 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 })