2015-02-10 21 views

回答

1

没有这样做,有一个操作的直接方式。您需要迭代所有收集文档并更新每个文档。

这将是这样的:

db.collection.find().forEach(function(doc){ 
    db.collection.update(
     {"_id":doc._id}, 
     { 
      "$set":{ 
       "GPS":[doc.longitude, doc.latitude] 
      }, 
      "$unset" : {longitude : "", latitude : ""} 
     } 
    ); 
}) 
+0

非常感谢你much.That真的帮了我。 – lijia 2015-02-11 02:43:50

0

另一种方式:

var a = db.temp.find({_id : "jdhdhjdhdjfh"}, {_id : 0, longitude : 1, latitude : 1}) 
var obj = {}; 
obj["GPS"] = [a[0].longitude, a[0].latitude] 
db.temp.update({_id : "jdhdhjdhdjfh"}, 
{$set : obj, $unset : {longitude : 1, latitude : 1} } 
) 
+0

Thanks.Learn more from from。 – lijia 2015-02-11 02:44:59

+0

这个答案不正确。首先,查找操作是异步的。其次,你只是更新第一个文档而不是所有的集合。 – joao 2015-02-11 06:46:04

+0

试试你的本地!我想,那是要求!或者如果那不是,那么你可以迭代文档。 – 2015-02-11 11:10:21

相关问题