2011-04-07 12 views
47

Bu aptalca bir soru gibi görünüyor ama henüz cevabı bulamadım. Bir MongoDB koleksiyonunda aynı alan-> değerini HER kayıta eklemek istediğimde, bunun için uygun kabuk komutu ne olurdu?MongoDB: koşulsuz güncellemeler?

biraz toparlamaya nasıl şaşkın

çoklu güncelleme sadece $ operatörleri ile çalışır: Boş bir sorgu ile çok güncelleştirme yapıyor çalıştı ({}) ama bu hata ile sonuçlandı . Baska öneri?

cevap

98

Hata herşeyi söylüyor: Birden çok belgeyi yalnızca $ modifier operators kullanarak değiştirebilirsiniz.

> db.coll.update({ }, { a: 'b' }, false, true); 

normalde yanlış oldu { a: 'b' }multi eğer birlikte koleksiyonunda ilk nesneyi yerini alacak: Muhtemelen böyle bir şey vardı. Koleksiyonunuzdaki tüm nesneleri aynı belgeyle değiştirmek istemezsiniz!

Kullanım yerine $set operator:

> db.coll.update({ }, { '$set': { a: 'b' } }, false, true); 

Bu 'b' her belgenin (gerektiğinde bunu yaratılmasının) a özelliğini ayarlar.

+0

Yardımın için teşekkürler! Bu benim hatamdı. Tırnak olmadan –

+1

'$ set' de işe yarayacak – Jaider