我在nosql世界中相当新,我想尝试一下" geonear" mongodb中的(地理空间)功能,我以这种形式导入了一些数据:
{
"_id":ObjectId("549164b752c5c30b15bbc26a"),
"ville":"Auenheim",
"lat":"48,81",
"lon":"8,01"
}
我需要以这种形式更新我的所有数据集合:
{
"_id":ObjectId("549164b752c5c30b15bbc26a"),
"ville":"Auenheim",
loc : { type: "Point", coordinates: [ 8.01 , 48.81] }
}
更新查询是否有办法使用mongo执行此操作? 或者我应该使用PHP脚本(集合是巨大的..)
谢谢你的帮助, 快乐答案 0 :(得分:0)
您可以遍历每个文档并使用简单的脚本更改格式。在mongo shell中,你会写一些类似
的东西db.test.find({}, { "lat" : 1, "lon" : 1 }).forEach(function(doc) {
db.test.update({ "_id" : doc._id },
{
"$unset" : { "lat" : 1, "lon" : 1 },
"$set" : { "loc" : { "type" : "Point", "coordinates" : [ doc.lon, doc.lat ] } }
})
})
您还需要将lat
和lon
更改为数字。我不确定这是错字还是什么,但如果需要,你可以将其作为功能的一部分。为了加快速度,大多数驱动程序都支持parallel collection scan,以使用多个线程处理所有文档。