Python web uygulaması (PyMongo + Bottle) için arka uç veritabanı olarak MongoDB kullanıyorum. Kullanıcılar yükleme sırasında dosya yükleyebilir ve isteğe bağlı olarak bu dosyaları 'etiketleyebilir'. etiketleri aşağıda başına, belge içinde liste halinde saklanır:Yeniden ekleme eklenmeden PyMongo'daki MongoDB belge dizisine öğe ekle
{
"_id" : ObjectId("561c199e038e42b10956e3fc"),
"tags" : [ "tag1", "tag2", "tag3" ],
"ref" : "4780"
}
Kullanıcıların herhangi bir belgeye yeni etiketler eklemek için izin çalışıyorum. Böyle bir şey ile geldi: (.. Bilginize; daima tektir ref
anahtar bu kolayca yanı _id
olabilir)
def update_tags(ref, new_tag)
# fetch desired document by ref key as dict
document = dict(coll.find_one({'ref': ref}))
# append new tag
document['tags'].append(new_tag)
# re-insert the document back into mongo
coll.update(document)
sadece 'Etiket' değerini güncellemek için bir yol olması gerektiği gibi görünüyor tüm belgeyi geri çekmeden ve yeniden takmadan. Burada bir şey mi eksik?
Herhangi bir düşünce büyük takdir edilmektedir :)
İkisi arasındaki fark nedir? Sadece dönüş değeri (belge bir UpdateResult nesnesine göre)? Ne zaman birini kullanıyorsun? – stackoverflowwww
'Etiketler' alanı yoksa ne olur? –
"Etiketler" alanı mevcut değilse, oluşturulur. @GauravOjha – styvane