目前,我有我的緯度/長在我的MongoDB數據庫不同的領域,但如果我想要做的地理空間搜索我需要他們在這個格式:更新MongoDB的文件地理空間搜索
{ location : [ 50 , 30 ] }
通過按照上面的說明,我可以將每個文檔的緯度/長鍵的值轉換爲新的關鍵點?
TIA!
目前,我有我的緯度/長在我的MongoDB數據庫不同的領域,但如果我想要做的地理空間搜索我需要他們在這個格式:更新MongoDB的文件地理空間搜索
{ location : [ 50 , 30 ] }
通過按照上面的說明,我可以將每個文檔的緯度/長鍵的值轉換爲新的關鍵點?
TIA!
您將不得不遍歷所有沒有location
字段的文檔並添加它(可能刪除lat/long字段,除非這會破壞您的應用程序)。
db.mycollection.find({ location : { $exists : false } }).forEach(
function (doc) {
// Add (lon, lat) pairs .. order is important
doc.location = { lon: doc.lon, lat: doc.lat };
// Remove old properties
delete doc.lon;
delete doc.lat;
// Save the updated document
db.mycollection.save(doc);
}
)
注意,MongoDB的geospatial indexing順序應該是您的文檔(經度,緯度)的一致。
讀出舊文檔,翻轉數值,寫出結果。不要忘記你更新了哪些。我錯過了什麼嗎? – 2012-07-31 01:24:45
是的,沒錯。只是想知道如何。這篇文章似乎覆蓋它:http://stackoverflow.com/questions/3788256/mongodb-updating-documents-using-data-from-the-same-document/3792958#3792958 – occasl 2012-07-31 17:15:13