SORU
3 Mayıs 2013, Cuma


MongoDB atom "findOrCreate": varolmayan, ama güncelleme yoksa findOne Ekle

gibi başlık diyor, ben istiyorum gerçekleştirmenize bul (tek) için bir belge, _ıd, ve eğer yoksa, o yarattı, o zaman olsun bulundu ya da oluşturulmuş, döndü geri.

FindAndModify mu okudum eğer varsa güncelleme yapmak istemiyorum. Stackoverflow üzerinde birçok soruya bu konuda gördüm ama yine bir şey güncellemek istemiyorum.

Eğer oluşturarak (mevcut değil), BU da aslında herkesin konuştuğu güncelleme ise, çok confuzzling var emin değilim :(

CEVAP
3 Mayıs 2013, Cuma


İle başlayan artık findOrCreate atom gibi işlemler için benzersiz bir dizin (veya başka bir çözüm) güvenmek gerekli 2.4, MongoDB.

Bu the $setOnInsert operator belgeler eklerken sadece olmaması gerekirdi güncellemeleri belirtmenizi sağlayan 2.4, Yeni için teşekkürler.

Bu, upsert seçeneği ile birlikte, findAndModify findOrCreate-atom gibi bir işlemi gerçekleştirmek için kullanabileceğiniz anlamına gelir.

db.collection.findAndModify({
  query: { _id: "some potentially existing id" },
  update: {
    $setOnInsert: { foo: "bar" }
  },
  new: true,   // return new doc if one is upserted
  upsert: true // insert the document if it does not exist
})

$setOnInsert sadece belgeler eklenen etkiler olarak, eğer varolan bir belge bulunursa, hiç bir değişiklik ortaya çıkar. Hiçbir belge varsa, _ıd, sonra gerçekleştirmek belirtilen Ekle sadece set ile bir upsert. Her iki durumda da, belge döndürülür.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Diogo Oliveira

    Diogo Olivei

    4 HAZİRAN 2006
  • ImBluecams

    ImBluecams

    25 Kasım 2012
  • SlimaksClass

    SlimaksClass

    15 Kasım 2010