SORU
3 Ocak 2011, PAZARTESİ


MongoDb, nasıl endeksini tarafından bir dizi öğe kaldırılsın mı

{

        "_id" : ObjectId("4d1cb5de451600000000497a"),           
        "name" : "dannie",  
        "interests" : [  
            "guitar",  
            "programming",           
            "gadgets",  
            "reading"  
        ]   
}

Yukarıdaki örnekte, yukarıdaki belge olduğunu varsayalımdb.insanlartoplama. Nasıl 3 öğe kaldırmak içinilgi alanlarıo dizidizin?

Düzenleme:

Bu benim geçerli çözüm

var interests = db.people.findOne({"name":"dannie"}).interests;  
interests.splice(2,1)  
db.people.update({"name":"dannie"}, {"$set" : {"interests" : interests}});

Daha doğrudan bir yolu var mı?

CEVAP
3 Ocak 2011, PAZARTESİ


Çekerek/düz yolu dizi dizini kaldırarak yok. Aslında, bu açılmış bir konudur http://jira.mongodb.org/browse/SERVER-1014 , bunun için oy verebilirsiniz.

Geçici $Geri Al ve sonra da $çek kullanarak

db.lists.update({}, {$unset : {"interests.3" : 1 }}) 
db.lists.update({}, {$pull : {"interests" : null}})

Bu yaklaşım, atom ve diğer müşteriler okursanız bazı yarış koşulları neden olabilir bazı yorumlar belirtildiği gibi ve ya iki işlem arasında/yazma. güncelleme: Eğer işlem atom olduğu için, iyi bir alternatif olabilir.

  • Veritabanından belgeyi okuyun
  • Belge güncelleme ve dizideki öğeyi kaldırmak
  • Veritabanında belge değiştirin. Belgeyi okuduk beri değişmedi emin olmak için, geçerli desen in the mongo docs anlatılan güncelleştirmeyi kullanabilirsiniz

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DetroitBORG

    DetroitBORG

    29 Temmuz 2008
  • disneychannel

    disneychanne

    19 ŞUBAT 2006
  • GOTO Conferences

    GOTO Confere

    3 EKİM 2011