Helpex - Trao đổi & giúp đỡ Đăng nhập
5

Tài liệu là cái này

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

tôi muốn tài liệu chane như thế này

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

vì vậy tôi sẽ thử điều này bằng bảng điều khiển 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}});
})

nhưng nó rất chậm TT

tôi nghĩ một giải pháp khác

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

nhưng tôi không thể chạy nó. bởi vì giải pháp đầu tiên vẫn đang chạy ....

bạn có bất kỳ giải pháp nhanh chóng như công việc này?

5 hữu ích 0 bình luận 6.0k xem chia sẻ
10

Truy vấn thứ hai của bạn bị hỏng vì nó sẽ ghi đè lên toàn bộ tài liệu, hãy sử dụng $ set:

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

Điều này sẽ nhanh hơn ít nhất hai lần so với nỗ lực ban đầu của bạn vì bạn đang cập nhật cùng một tài liệu hai lần, điều này là không cần thiết.

10 hữu ích 1 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ mongodb , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading