2015-03-30 3 views
0

У меня есть таблица mongoDB с длинными/латами как поля. Мне нужно добавить индекс 2dsphere, основанный на значениях этих полей в коллекции. Каков наилучший способ обновления всех документов в коллекции?добавить индекс 2dsphere для всех документов в коллекции mongoDB

ответ

0

С такими документами?

> db.test.findOne() 
{ "_id" : 0, "lat" : 45.2, "lon" : 37.5 } 

В Монго оболочки, попробуйте это для обновления

> db.test.find().forEach(function(doc) { 
    var geo = { "type" : "Point", "coordinates" : [doc.lon, doc.lat] } 
    db.test.update({ "_id" : doc._id }, { "$set" : { "loc" : geo }, "$unset" : { "lat" : true, "lon" : true } }) 
}) 

Теперь создать индекс гео:

> db.test.ensureIndex({ "loc" : "2dsphere" })