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

  • Gavin Hoey

    Gavin Hoey

    21 Aralık 2007
  • RiverCityGraphix

    RiverCityGra

    6 Ocak 2012
  • rtisticsdev

    rtisticsdev

    31 Mayıs 2012