当前位置:  开发笔记 > 数据库 > 正文

如何在MongoDB中快速更改字段或更新?

如何解决《如何在MongoDB中快速更改字段或更新?》经验,为你挑选了1个好方法。

文件是这样的

{title:"here", lat:123.4512, lng:36.3423, time:"2011-01-02"}

我想要像这样的chane文档

{title:"here", {latlng: {lat:123.4512, lng:36.3423}}, time:"2011-01-02"}

所以我将通过mongodb控制台尝试这个.

db.coll.find().forEach(function(u){
  u.latlng = {"lat":u.lat, "lng":u.lng};
  db.coll.save(u);
  db.coll.update(u, {$unset:{"map_x1":1, "map_y1":1}});
})

但TT很慢

我认为另一个解决方案

db.coll.find().forEach(function(u){
  db.coll.update(u, {{"latlng" : {"lat":u.lat, "lng":u.lng}}, $unset:{"lat":1, "lng":1}});
})

但我无法运行它.因为第一个解决方案仍在运行....

你有这样的快速解决方案吗?



1> Remon van Vl..:

您的第二个查询被破坏,因为它将覆盖整个文档,使用$ set:

db.coll.find().forEach(function(u){
  db.coll.update(u, {$set:{"latlng" : {"lat":u.lat, "lng":u.lng}}, $unset:{"lat":1, "lng":1}});
})

这至少是原始尝试速度的两倍,因为您需要两次更新同一文档,这是不必要的.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有