SORU
13 ŞUBAT 2012, PAZARTESİ


Nasıl MongoDB tüm belgeler için bir alanı yeniden adlandırmak miyim?

5000 kayıtları, her içeren bir şey ile MongoDB bir koleksiyon benzer var varsayarsak:

{
"occupation":"Doctor",
"name": {
   "first":"Jimmy",
   "additional":"Smith"
}

Tarlada "" "" tüm belgeler? son ek yeniden adlandırmak için kolay bir yoludur Belgelerinde $rename operatör gördüm ama gerçekten bir alt alan belirleme konusunda net değilim.

CEVAP
13 ŞUBAT 2012, PAZARTESİ


Kullanabilirsiniz:

db.foo.update({}, {$rename:{"name.additional":"name.last"}}, false, true);

Yukarıdaki yöntemi *5: { upsert:false, multi:true }. multi:true güncelleme gerekirtümkayıtlarınız.

Ya da eski yolu kullanabilirsiniz:

remap = function (x) {
  if (x.additional){
    db.foo.update({_id:x._id}, {$set:{"name.last":x.name.additional}, $unset:{"name.additional":1}});
  }
}

db.foo.find().forEach(remap);

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ColdfusTion

    ColdfusTion

    3 Aralık 2007
  • We've moved!

    We've moved!

    7 Ocak 2008
  • Mr. H

    Mr. H

    1 Temmuz 2012