SORU
24 EYLÜL 2010, Cuma


MongoDB: Güncelleme belge aynı belge verileri kullanarak

Belgeler, enlem ve boylam özellikleri (diğerleri arasında) bir listesi var.

{ 'lat': 1, 'lon': 2, someotherdata [...] } 
{ 'lat': 4, 'lon': 1, someotherdata [...] }
[...]

Bu gibi görünüyor, eğer bunu değiştirmek istiyorum

{ 'coords': {'lat': 1, 'lon': 2}, someotherdata [...]} 
{ 'coords': {'lat': 4, 'lon': 1}, someotherdata [...]}
[...]

Şimdiye kadar bu var:

db.events.update({}, {$set : {'coords': {'lat': db.events.lat, 'lon': db.events.lon}}}, false, true)

Ama davranırdb.olaylar.latvedb.olaylar.londizeleri gibi. Nasıl referans belge özelliklerini alabilir miyim?

Şerefe.

CEVAP
25 EYLÜL 2010, CUMARTESİ


Güncelleme:Eğer tüm yapmanız gereken bu değerleri değiştirmeden bir belgenin yapısını değiştirmek ise, güzel bir çözüm gipset's answer bkz.


Bir (artık) kullanılamaz duruma göre yorum 11* *olamaz update() içinde geçerli belgenin özellikleri referans.

Tüm belgeler arasında dolaşmak ve onları bu şekilde güncelleme gerekecek:

db.events.find().snapshot().forEach(
  function (e) {
    // update document, using its own properties
    e.coords = { lat: e.lat, lon: e.lon };

    // remove old properties
    delete e.lat;
    delete e.lon;

    // save the updated document
    db.events.save(e);
  }
)

Böyle bir işlevi de göster-azaltmak bir iş veya sunucu tarafı db.eval() bir iş olabilir, ihtiyaçlarınıza bağlı olarak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DanceOn

    DanceOn

    6 Mayıs 2006
  • Soulkiller13 ツ

    Soulkiller13

    30 Mayıs 2013
  • Tahir Jahi

    Tahir Jahi

    6 Mart 2006