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

  • Best Quality Cartoons

    Best Quality

    10 ŞUBAT 2014
  • CareyHolzman

    CareyHolzman

    24 Ocak 2008
  • Trevor Eckhart

    Trevor Eckha

    19 Aralık 2009